본문 바로가기
개발/python

[python] python 백그라운드 실행, nohup

by 왼하루 2021. 9. 13.
반응형

안녕하세요? 왼하루입니다.

파이썬을 개발하다보면 백그라운드로 특정 python file을 실행시키고, terminal 에서는 또다른 test나 작업을 하고 싶을 때가 있습니다.

이때 아래와 같이 실행하면 백그라운드로 실행됩니다.

 

main.py 를 백그라운드로 실행시킨다고 가정해봅시다.

 

python3 main.py &

하지만 위와 같이 실행하면 현재 창 종료 시 main.py 또한 종료 되는 단점이 있습니다.


nohup 사용 방법

이때 nohup 을 이용하시면, python은 백그라운드에서 실행되고 process 를 kill 시키기 전까지 백그라운드에서 실행을 지속 시킬 수 있습니다.

nohup python3 main.py &

실행시키면 nohup.out 이 생성되고 여기에 log가 찍히게 됩니다. 이 로그는 print 로 찍히는 로그를 어느정도 쌓았다가, nohup.out에 기록됩니다.

 


nohup process 종료

nohup 으로 실행되고 있는 main.py를 종료시키기 위해서는 process kill 을 해야 합니다.

먼저 terminal에서 아래와 같이 입력하여 process의 pid 번호를 알아야 합니다.

ps -ef | grep main.py

위와 같은 내용을 terminal 에 입력하면 아래와 같이 나옵니다.

 

user+  106957   78533 96 23:19 pts/6    00:00:10 python3 main.py
user+  107027   78533  0 23:19 pts/6    00:00:00 grep --color=auto main.py

여기에서 user+ 옆의 106957 이 현재 python3 main.py 를 실행한 process의 pid 입니다.

 

이를 아래와 같이 입력하여 process를 kill 해주면, 해당 main.py는 종료됩니다. -9 는 옵션입니다.

kill -9 106957

저 같은 경우에는 flask의 웹서버나 챗봇 api 서버를 실행시킬 때 nohup을 이용하여 백그라운드에서 돌아갈 수 있도록 해주고 있습니다. 

 

도움이 되셨길 바라며, 행복한 개발라이프를 즐기시길 바랍니다.

 

감사합니다.

댓글