[nohup 명령어를 이용하여 세션 연결이 끊겨도 프로세스가 동작하도록 하기]
nohup 명령어는 로그아웃과 같이 터미널과의 세션 연결이 끊기더라도 프로세스가 계속 동작하도록 만들어주는 명령어입니다.
터미널과의 세션 연결이 끊기게되면 리눅스에서 해당 세션에서 실행된 프로세스들에게 HUP(Hang Up) 시그널을 전달하여 프로세스들이 종료되도록 합니다. 이 때 세션이 종료되더라도 계속 실행하고 싶은 프로세스에는 HUP 시그널을 전달하지 않도록(No Hang Up)한다는 의미에서 nohup이라는 명령어 이름이 만들어졌습니다.
기본적인 명령어는 다음과 같습니다.
nohup [process] &
nohup 명령어를 이용해 실행할 프로세스와 관련된 파일의 권한은 755(rxwrx-rx-) 이상이어야 합니다. 또한 nohup 명령어를 사용할 경우 백그라운드 작업인 경우가 일반적이므로 명령어의 마지막 부분에 &을 추가하여 프로세스가 백그라운드 작업임을 명시해줍니다.
nohup 명령어는 기본적으로 표준 출력을 nohup.out 파일로 Redirection해주기 해당 파일을 이용하여 추후에 로그를 확인할 수 있습니다. 만약 로그를 남길 필요가 없을 때는 /dev/null로의 Redirection을 통해 로깅을 하지 않을 수 있습니다.
nohup [process] > /dev/null &
저는 표준 출력뿐만 아니라 표준 에러도 로깅하는 경우가 많아서 아래 명령어를 기본 포맷처럼 사용하고 있습니다 🙂
nohup [process] > [file] 2>&1 &
잘못된 내용, 오타, 부정확한 문장 등 어떤 피드백이든 환영합니다. 감사합니다.
References
'CS > Linux' 카테고리의 다른 글
[Linux] ps 명령어 (0) | 2022.04.28 |
---|---|
[Linux] 리눅스의 기본 구조: kernel, shell, process and shell session (0) | 2022.04.25 |