개요
보통 Linux에서는 명령어 뒤에 &를 붙여 프로세스를 백그라운드로 실행할 수 있다.
python test.py &
하지만 이러한 실행법은 쉘이나 터미널이 끊기면 프로세스도 함께 중단되는 문제가 있다.
nohup
nohup은 no hangup의 줄임말로 프로세스 중단이 없다는 의미의 명령어이다. 쉘을 데몬형태롤 실행시켜 세션이 끊겨도 백그라운드 프로세스가 중단되지 않고 유지된다.
nohup <CMD> &
# 예시
nohup python test.py &
nohup.out
기본적으로 nohup 실행 결과는 nohup.out 이라는 파일로 저장된다.
다만 실시간으로 실행 로그가 출력되지는 않는다. 실시간으로 로그를 출력할 때는 python 실행 시 -u 옵션과 함께 실행한다.
nohup python -u test.py &
# -u : stdout 과 stderr 스트림을 버퍼링하지 않도록 한다.
로그 파일명 지정
파일 리다이렉션을 사용하면 nohup.out이 아니라 다른 이름의 파일로 실행 로그를 저장할 수 있다.
nohup python -u test.py > test.log &
참고 문서
https://docs.python.org/ko/3/using/cmdline.html