[AWS] 서버 구축부터 배포까지 - # 6 nohup 을 이용한 무중단 배포 (백그라운드)
# nohup 이란?
nohup은 no hang up의 약자로, '끊지 마'라는 뜻을 가지고 있다.
즉, 세션을 종료하더라도 실행중인 프로그램은 종료하지 않도록 하는 명령어이다.
저번 시간에 했던 저버 배포를 예시로 들어보자면,
java -jar 빌드한파일이름.jar
위 명령어를 실행시켰을시, 배포한 웹페이지에 접속은 잘 되지만 만약 터미널을 닫았거나, 컴퓨터를 장시간 쓰지 않았을 때는 실행이 중지된 것을 볼 수 있다. 이럴 때 필요한 것이 바로 무중단 배포를 도와주는 nohup 명령어 인 것이다.
# nohup 을 사용하는 방법
nohup을 사용하는 방법은 아주 간단한데, 기존 명령어의 앞에 nohup만 붙여주면 된다!
(안될 경우에는 앞에 sudo 를 붙여줘보자)
저번 시간에 했던 저버 배포를 예시로 들어보자면, 아래 명령어처럼 사용하면 된다.
nohup java -jar 빌드한파일이름.jar
//sudo nohup java -jar 빌드한파일이름.jar
주의! nohup으로 실행시킬 파일은 반드시 chmod 755 퍼미션을 가지고 있어야한다.
# nohup 로그 조회
cat nohup.out // 로그 조회
tail -f nohup.out // 로그 테일링
nohup 로그는 nohup.out 에 저장되게 되는데, 이것을 읽어오면 쉽게 확인할 수 있다.
# & (백그라운드) 란?
무중단 서버와는 관련없지만, 백그라운드라는 것에 대해 추가적으로 알아보자!
먼저 포어그라운드, 백그라운드라는 개념에 배해 얘기해보자면, 포어그라운드는 말 그대로 앞에서 돈다, 백그라운드는 뒤에서 돈다 라는 것이다. 일반적으로 명령어를 실행시키면 포어그라운드에서 실행되게 된다. 그럼 우리가 오래 걸리는 작업을 실행하고 있을 때, 그 작업이 끝날때까지 기다려야만 할까? 그렇지 않다! 어떠한 작업을 실행하고 있을 때, 기다리는 것 보다 다른 작업을 동시에 하고 있는게 더 효율적이고 그것을 가능하게 해주는 것이 바로 이 & (백그라운드) 이다.
# & 을 사용하는 방법
백그라운드를 사용하는 방법 또한 정말 간단하다! 아래처럼 그냥 명령어 뒤에 & 만 붙여주면 된다.
java -jar 빌드한파일이름.jar &
// java -jar 빌드한파일이름.jar 명령어를 백그라운드에서 실행하기
당연히 nohup과 &을 혼합해서 다음과 같은 방법으로도 사용이 가능하다.
nohup java -jar 빌드한파일이름.jar &
# 프로세스를 종료하는 방법
이제 실행중인 프로세스를 종료하는 방법에 대해 알아보자.
먼저 PID 를 알 때는 다음 명령어를 통해 프로세스를 종료할 수 있다
sudo kill -9 PID번호
PID 를 모르고 있다고 해도 걱정하지말자.
ps -ef
위 명령어를 입력하게 되면 현재 실행되고 있는 프로세스의 목록이 보여지게 된다.
맨 오른쪽에 CMD를 확인해가면서 프로세스를 찾고 PID 를 확인해도 되지만, 아래 명령어를 통해 원하는 단어를 포함한 프로세스를 추출할 수도 있다.
ps -ef | grep 원하는단어
예를 들면 ps -ef | grep java 를 입력하면 java 가 들어간 현재 실행중인 모든 프로세스를 찾아준다.
그리고 이렇게 PID 번호도 나오게 되는데, kill -9 638420 명령어를 입력하게 되면 프로세스가 잘 종료된 것을 볼 수 있다.
오늘은 무중단 명령어 nohup과 백그라운드 명령어 & 을 알아보았다.
이로써 서버의 구축부터 배포가 끝났다!!!
다음에는 AWS 에서 이용 가능한 데이버테이스인 RDS 를 사용하는 방법에 대해서 배워보자!