nohup 명령어로 어플리케이션 실행하기

Jin
2 min readDec 20, 2019

nohup 은 “no hangups” 라는 의미로, 리눅스/유닉스에서 쉘 스크립트파일을 데몬 형태로 실행시키는 명령어다. 터미널이 끊겨도 실행한 프로세스는 계속 동작하게 한다.

$ nohup sh shell.sh &

& 을 추가 해 백그라운드로 실행시킨다.

nohup 은 한번 실행되면 독립적으로 계속 동작해 터미널과의 연결이 종료되었을 때도 실행 중 생기는 메시지를 출력할 곳이 필요하기 때문에 nohup.out 이라는 파일을 만들어 모든 메시지를 이 파일에 출력한다.

nohup 으로 실행한 프로세스를 멈추고 싶다면 해당 프로세스를 죽이면 된다.

$ kill -9 <pid>

nohup 명령어로 jar 파일을 실행 해 보았다.

$ nohup java -jar sample.jar &

그런데 AWS Redhat 7(os 문제인지는 모르겠음..)에서 java 의 jar 파일을 nohup 으로 실행하면 문제가 없었는데 node.js 파일을 nohup 명령어로 실행했을 때, 몇분 뒤 프로세스가 자꾸 멈춰버릴때가 있었다. 그래서 nohup과 같은 역할을 하는 node.js 패키지인 forever 를 설치 해 실행 했더니 멈추지 않고 잘 돌아간다. 그래서 둘의 차이를 살짝 검색 해 보니, forever 는 nohup 과는 다르게 node 어플리케이션이 문제가 생겨 동작을 멈춰도 다시 재가동 시켜 어플리케이션이 계속 동작하도록 잘 관리 해 준다고 한다. node.js 어플리케이션을 실행시킬 때는 forever 가 더 나을 듯 싶다.

# forever 설치
$ npm install forever -g
# app.js 실행
$ forever start app.js

--

--

Jin

살어리 살어리랏다 쳥산(靑山)애 살어리랏다