-
[Linux] nohup, &서버 2016. 11. 3. 17:34
nohup이란
리눅스, 유닉스에서 쉘스크립트파일 (*.sh)을 데몬형태로 실행시키는 프로그램
터미널 세션이 끊겨도 실행을 멈추지 않고 동작하도록 함
&이란?
프로세스를 실행할 때 백그라운드에서 동작하도록 만드는 명령어
주의사항
nohup으로 실행할 쉘스크립트파일 (*.sh)은 현재 퍼미션이 755 이상 상태여야 함.
chmod 755 shell.sh실행방법
$ nohup shell.sh & $ nohup sh -- ./shell.sh &
종료방법
1. “ps -ef | grep 쉘스크립트파일명” 명령으로 데몬형식으로 실행 2. "kill -9 PID번호“ 명령으로 해당 프로세스 종료
로그파일
nohup으로 쉘파일을 실행하면 자동으로 "nohup.out" 파일이 생성되고 이 파일에는 리다이렉션을 사용하지 않은 출력문자열이 자동으로 저장
nohup과 &차이
$ ./run & $ nohup ./run &
위 두 명령어의 차이점은 다음과 같습니다.
nohup 으로 실행하면 hang-up signal 이 와도 동작하기 때문에 터미널 연결이 끊어져도 실행을 멈추지 않습니다.
'& 으로만 실행해도 터미널이 끊어져도 실행이 멈추지는 않던데...' 라고 말하는 분들이 있을 것입니다. & 은 백그라운드로 돌린다는 의미이며, 기본적으로는 nohup 이 아닐 경우 터미널이 끊어지면 실행도 끊어집니다. 하지만 요즘 옵션에 nohup 과 같은 동작을 하게 설정이 되어 있어서 & 만으로도 nohup 과 같은 동작을 보입니다.
팁
만약 nohup명령어로 직접 만든 스크립트를 실행하고자 하는데 명령어를 입력한 후 엔터를 치면 exit이 나온다면 스크립트에 에러가 있어 종료가 되는 것입니다. (에러를 안뱉어줘..)