𝑨𝑾𝑺

[AWS] 서버 구축부터 배포까지 - # 6 nohup 을 이용한 무중단 배포 (백그라운드)

기누 2022. 11. 10. 20:29

# 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 를 사용하는 방법에 대해서 배워보자!