2023년 4월 5일 작성

nohup - Background Program 실행시키기

nohup은 program을 background에서 실행시키는 명령어입니다.

nohup : No Hang Up

  • program을 daemon의 형태로 실행시킵니다.
    • logout으로 session과의 연결이 종료되어도 program이 종료되지 않습니다.

nohup 사용법

nohup [program_command]
  • 실행하고자 하는 program 명령어 앞에 nohup를 붙이면 됩니다.

nohup + & : 가장 안전하게 background에서 실행하는 방법

nohup ./my_shellscript.sh &
  • program을 종료 없이 background에서 실행시키고 싶다면 nohup&(background)를 조합해서 쓰는 것이 가장 확실하고 안전합니다.

& (ampersand)

  • program 실행 시에 명령어 맨 끝에 붙이면 foreground가 아니라 background로 실행됩니다.
./my_shellscript.sh & 
  • logout으로 session과 연결이 끊어지면, &로 실행되고 있던 program도 함께 종료됩니다.
    • program을 단지 사용자 눈에 보이지 않는 background 형태로 돌리고 있는 것이기 때문입니다.
    • 예외적으로, 연결이 끊어져도 nohup처럼 program은 계속 실행되는 경우가 있습니다.
      • 특정 version 이상부터 session이 끊어져도 program이 종료되지 않는 option이 default로 바뀌었기 때문입니다.

shopt : &의 Default Option 확인하기

shopt | grep huponexit
  • shopt: shell option을 조회해 볼 수 있는 명령어입니다.
  • huponexit off라고 나오면 &만으로만 program을 실행해도 session 연결 종료 시에 program이 종료되지 않습니다.

Background에 떠 있는 Process 종료하는 방법

  1. ps 명령어로 process_id를 알아냅니다.
    • ps -ef | grep my_shellscript.sh
  2. kill 명령어로 process를 종료시킵니다.
    • kill -9 [process_id]

Reference


목차