본문 바로가기
개발/python

python 백그라운드에서 실행하는 방법 (ssh 터미널 종료)

by 낭만기사 2023. 12. 28.
반응형

명령어 nohup python -u app.py > app.log & 는 Python 스크립트 (app.py)를 백그라운드에서 실행하고 그 출력을 파일 (app.log)로 리디렉션하는 것을 목적이다.

nohup python -u app.py > app.log &

nohup 실행

  1. nohup: "No Hangup"의 줄임말로, 터미널이 종료되거나 사용자가 로그아웃해도 프로세스가 계속 실행되게 합니다.
  2. python -u: Python 인터프리터를 사용하여 스크립트를 실행합니다. -u 플래그는 버퍼링 없이 (unbuffered) 출력을 진행하게 합니다, 즉, 출력이 즉시 app.log 파일로 전송됩니다.
  3. app.py: 실행할 Python 스크립트 파일입니다.
  4. > app.log: 표준 출력 (stdout)을 app.log 파일로 리디렉션합니다. 이 파일에는 스크립트 실행 중 생성되는 모든 출력이 저장됩니다.
  5. &: 이 기호는 명령어를 백그라운드에서 실행하게 합니다.

이 명령어를 사용하면, app.py 스크립트가 백그라운드에서 실행되며, 터미널을 닫아도 계속 실행됩니다. 모든 출력은 app.log 파일에 기록됩니다.

 

백그라운드에서 실행 중인 프로세스를 종료하려면 먼저 해당 프로세스의 ID를 알아내야 합니다. nohup 명령어를 사용하여 백그라운드에서 실행한 프로세스의 ID를 찾는 방법은 다음과 같습니다:

 

프로세스 ID 찾기: 백그라운드 프로세스의 ID를 찾으려면 ps 명령어를 사용합니다. 명령어는 다음과 같습니다:

ps aux | grep 'python -u app.py'

 

프로세스 종료하기: 프로세스 ID (PID)를 알게 되면, kill 명령어를 사용하여 해당 프로세스를 종료할 수 있습니다. 예를 들어, 프로세스 ID가 12345라면 다음과 같이 입력합니다:

kill 12345

 

만약 정상적으로 종료되지 않는다면, 강제 종료 옵션인 kill -9을 사용할 수 있습니다:

kill -9 12345

 

반응형