리눅스/유닉스 환경에서 Python 파일을 하루종일 동작시키고 싶은데
실제 PC는 Window이고 해당 소스가 Cloud에 올라가 있어 터미널을 이용해 접속해야한다고 해보겠습니다.
이럴 경우 터미널을 계속 켜놓고 있으면 Cloud에서 동작시키는 의미가 얕아집니다.
이런 상황을 피하기 위해 한번 실행시키고 터미널 연결이 끊어져도 계속 파일을 수행시키는 백그라운드 작업을 실행시키는 nohup에 대해 알아보겠습니다.
(Javascript 파일 실행에는 foreverjs나 pm2가 같이 훌륭한 관리 도구가 있는데 Python은 있나 제가 잘 모르겠네요.)
1.준비물
nohup 명령어를 통해 백그라운드 실행을 시킬 파일은 755 권한이 필요합니다.
chmod 755 main.py
2. nohup과 &
nohup을 사용하면 프로세스와 터미널의 연결을 끊습니다. 즉 터미널이 사라져도 계속 돌아가게 됩니다.
& 을 붙이면 백그라운드로 동작합니다.
&만 사용해서 Python을 동작시키는 경우 터미널 연결이 끊어지면 동작이 멈춥니다.
그러면 main.py를 터미널이 끊어져도 백그라운드로 계속 동작시키려면 터미널에 아래와 같이 입력하면 됩니다.
nohup python main.py &
3. 로그 보기
이때 발생하는 입출력은 nohup.out에 쌓이게 됩니다.
이 입출력 결과를 확인하고 싶다면 아래 명령어를 사용합니다.
tail -f nohup.out
4. nohup.out Out!
nohup.out으로 로그가 쌓이는 것이 싫을 때 사용하는 명령어
nohup python main.py 1>/dev/null 2>&1 &
5.프로세스 종료 시키기
ps -ef | grep main.py # 프로세스ID 찾기
kill xxxxx # 위에서 찾은 프로세스ID 삭제
반응형
댓글