[Linux] runserver 백그라운드로 실행하기 - nohup

seungminryu·2021년 12월 23일

AWS ec2를 통해 서버배포

학교 db수업 과제를 서버를 통해 배포하기 위해 ec2를 사용하였다. ec2 클라우드 컴퓨터 내에서 서버가 정상적으로 동작하는 것을 모두 확인하고 배포만 남은 상황이였다.

python3 manage.py runserver 를 통해 기존처럼 배포를 했지만 문제점은 셸을 끄면 python3 프로세스도 자동적으로 종료되어 버린다는 점이다.

이를 해결하기 위해 nohup 명령어를 사용했다.

 

nohup

nohup 명령어는 프로세스를 백그라운드에서 실행할 수 있게 해주는 명령어이다.

nohup [PROCESS_NAME] &

위처럼 프로세스 이름을 nohup 명령어 뒤에 적고 마지막에 &를 붙이고 실행하면 프로세스가 쉘을 종료시켜도 백그라운드에서 동작하게 된다.

예를 들어 실행시키고 싶은 명령어가 python3 manage.py runserver 라면

nohup python3 manage.py runserver &

위처럼 명령어를 입력한다. 그 후
nohup: ignoring input and appending output to ‘nohup.out’
라는 메시지가 뜨면 정상적으로 완료된것이다. 이 메시지는 프로세스의 stdout을 nohup.out 파일로 저장하겠다는 뜻이며 nohup.out 파일을 확인하면 모든 기록을 볼 수있다.

그 후 exit 명령어를 통해 쉘을 꺼주어야 정상적으로 백그라운드 프로세스가 실행된다. 난 exit 명령어를 사용하지 않고 바로 쉘을 껐었는데 이때 백그라운드 프로세스가 계속 실행되지 않고 종료되었었다.

 

백그라운드 프로세스 종료

실행중은 백그라운드 프로세스의 종료는 kill 명령어를 사용한다.

ubuntu@ip-172-31-34-148:~$ ps -ef | grep python3
root         451       1  0 Dec21 ?        00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root         621       1  0 Dec21 ?        00:00:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
ubuntu     37984       1  0 01:35 ?        00:00:00 python3 manage.py runserver
ubuntu     37986   37984  0 01:35 ?        00:00:10 /usr/bin/python3 manage.py runserver
ubuntu     39032   39022  0 02:11 pts/0    00:00:00 grep --color=auto python3
ubuntu@ip-172-31-34-148:~$ kill -9 37986

위 처럼 ps 명령어로 프로세스를 찾고 프로세스의 ID를 찾아 종료시킨다.


참고

profile
가치를 담는 개발과 디자인 :)

0개의 댓글