Nohup은 프로세스를 시작한 사용자가 로그아웃한 후에도 프로세스를 계속 실행할 수 있도록 하는 Unix 명령이다.
이름에서 볼 수 있듯 nohup은 No Hang Ups의 약자로 백그라운드로 지속적으로 실행하는 프로세스를 의미한다.
Nohup의 주요 목적은 프로세스를 시작한 터미널 또는 셸 세션이 닫히거나 종료된 경우에도 프로세스가 계속 실행되도록 해준다.
이는 장기 실행 작업이나 중단을 원하지 않는 작업을 실행해야 할 때 유용합니다.
프로세스가 Nohup 명령으로 시작되면 터미널에서 분리되고 운영체제의 백그라운드에서 실행된다.
즉, 프로세스가 계속 실행되기 위해 터미널에 의존하지 않고 터미널이 닫히거나 사용자가 로그아웃하더라도 계속 실행될 수 있다.
nohup command-name
: nohup 이후 실행하고자 하는 프로세스나 스크립트를 적어준다.
nohup command-name &
: 백그라운드로 실행시 뒤에 & 을 붙여주면 된다.
일반적으로 nohup 실행 시 nohup.out
이라는 log파일(백그라운드 실행/출력 log)이 같이 생성된다.
log 파일을 생성하지 않기 위해 nohup 실행과 출력을 /dev/null
로 보내는 명령어를 사용
nohup command-name 1>/dev/null &
: 표준출력의 결과를 /dev/null
로 보냄
nohup command-name 1>/dev/null 2>&1 &
: 표준출력(1)의 결과를 /dev/null
로 보내 버리고, 표준에러(2)를 표준출력(1)이 전달되는 곳으로 같이 보냄
> || >>
를 이용해 다른파일에 출력할 수 있다. 단, 폴더생성 후 실행해야 한다.
nohup command-name 1 > nohup.out 2 > nohup.err &
nohup command-name 1 > nohup.out 2>&1 &
`ps -ef | grep filename.sh` : 백그라운드 실행의 경우 실행중인 내용은 프로세스 상태를 통해서만 확인이 가능하다.
`kill -9 PID` : 위에서 확인한 PID를 사용해 프로세스를 종료할 수 있다.
Nohup은 유용한 도구이지만 기능면에서 몇 가지 제한이 있다.