본문 바로가기
Infra

nohup - 프로세스 백그라운드 실행

by 지금갑시다 2024. 2. 1.

 

 

터미널에서 실행하는 프로그램 즉 프로세스들은 터미널이 종료되면 프로세스들도 같이 종료된다.

 

터미널이 종료되는 것을 세션의 끊김이라 표현하고, logout이라고도 표현한다.

 

이때 터미널이 종료됨과 함께 hup이라는 signal을 보내 해당 터미널을 통해 실행된 프로세스들을 종료하는 신호를 보낸다.

 

 

 

이 경우에 'hup 시그널을 받아도 받지 않은 것처럼 있겠다~~' 가 바로 nohup이다.

 

 

 

예시와 함께 좀 더 이해하자!

 

여기 ABC.jar 파일이 있다.

 

이를 실행시키기 위해서는 아래와 같이 터미널에 입력한다.

java -jar ABC.jar

 

 

근데 이렇게 입력하게 되면, 터미널의 한창이 ABC.jar 파일을 실행하느라 다른 작업을 못하게 된다.

 

따라서 터미널 화면을 볼 수 있고, ABC.jar도 함께 실행되도록 백그라운드 실행을 함께 추가해준다.

 

java -jar ABC.jar &

 

뒤에 &만 추가해주면 백그라운드에서 실행이 된다. 

 

하지만, 이렇게 하면 터미널의 세션이 끊길때 hup signal로 ABC.jar의 프로세스를 종료될 것이다.

 

이를 막기 위해

nohup java -jar ABC.jar &

 

위와 같이 실행해주면 백그라운드에서 실행되며 터미널이 종료되어도 그대로 실행되고 있을 것이다.

 

만약 이 ABC.jar 프로세스를 종료하고 싶다면.

 

ps -all

 

을 이용해 java로 실행되고 있는 프로세스의 pid를 확인한뒤

 

kill -9 {프로세스 pid}

 

위와 같이 종료해주면 된다!

 

 

노헙!!