ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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이 나온다면 스크립트에 에러가 있어 종료가 되는 것입니다. (에러를 안뱉어줘..)


    댓글