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

seungminryu·2021년 12월 23일
0
post-custom-banner

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
가치를 담는 개발과 디자인 :)
post-custom-banner

0개의 댓글