주제: Python 스크립트 백그라운드에서 계속 돌리는 방법
작성: 2024-05-29
수정: 2024-06-12
내 코드가 계속 돌아가게 하고싶다...
만약, 본인이 어떤 자동화코드를 만들었다고 한다면, 백그라운드 내에서는 지속적으로 코드가 돌아가게 하고 싶을 겁니다.
그게 진정한 자동화 코드의 완성일 테니깐요.
그럼, 오늘은 파이썬로 작성한 스크립트를 터미널 또는 세션이 종료되더라도 계속 실행할 수 있는 방안을 공유하고자합니다.
(근데 이거 나만 몰랐나...? 주변에는 많이 아네?)
nohup
nohup은 "no hang up"의 약자로, 세션이 종료되더라도 명령어가 계속 실행되도록 해주는 리눅스 명령어입니다.
리눅스 명령어이다보니, 추가적으로 패키지를 설치하거나 할 필요없이 바로 사용이 가능합니다.
- nohup의 가장 큰 장점: 터미널 세션이 종료되더라도 백그라운드에서 작업을 지속 가능
백그라운드 내 파이썬 실행하는 방법
그럼, 실제적으로 사용해보도록 하겠습니다.
아래 예시에서는 스크립트 이름은 wscode.py 으로 하겠습니다.
# 명령어 nohup
#nohup python 본인스크립트명 &
nohup python wscode.py &
아래와 같이 nohup 명령어와 함께 본인이 생성한 Python 스크립트를 실행할 수 있습니다.
nohup: ignoring input and appending output to 'nohup.out'
이는 nohup이 입력을 무시하고 출력을 nohup.out 파일에 기록한다는 뜻입니다.
진짜로 실행되고 있는지..? 확인하는 방법
위에 명령어를 실행시키면, '이게 진짜로 실행하고 있는건가..?' 라는 의문이 들곤합니다.
이럴때, 실행 결과 확인 방법은 아래의 명령어를 실행하면 확인 가능합니다.
실행되고있는지 확인하는 방법은 크게 2가지로 나눌 수 있습니다.
Option 1) jobs
jobs -l
Option 2) ps -ef
ps -ef | grep python
로그확인하는 방법
스크립트가 실행되면서 생성되는 로그는 nohup.out 파일에서 확인할 수 있습니다.
로그를 실시간으로 확인하려면 다음 명령어를 사용합니다:
tail -f nohup.out
이 명령어는 nohup.out 파일의 마지막 몇 줄을 지속적으로 출력하여 실시간 로그를 보여줍니다.
백그라운 작업확인
백그라운드에서 실행 중인 작업 목록을 확인하려면 다음 명령어를 입력합니다:
jobs -l
[1] 12345 Running nohup python wscode.py &
백그라운 작업 종료
특정 작업을 종료하려면 해당 작업의 PID를 확인하고 kill 명령어를 사용합니다.
예를 들어, PID가 12345인 작업을 종료하려면 다음과 같이 입력합니다:
kill 12345
이 명령어는 운영 체제에 PID 12345인 프로세스를 종료하도록 지시합니다.
백그라운드 작업이 더 이상 필요하지 않거나 문제가 발생했을 때 유용합니다.
요약
nohup 명령어를 사용하면 터미널 세션이 종료되더라도 Python 스크립트를 계속 실행할 수 있습니다. 다음과 같은 단계를 따르면 됩니다:
- nohup과 &를 사용하여 스크립트를 백그라운드에서 실행
- nohup.out 파일을 통해 로그 확인
- jobs -l 명령어로 백그라운드 작업 확인
- kill 명령어로 백그라운드 작업 종료
이 방법을 사용하면 SSH 세션이 끊겨도 중요한 작업을 계속 수행할 수 있으며, PID를 사용하여 특정 백그라운드 작업을 종료도 가능합니다.
'Python > 6️⃣ 자동화' 카테고리의 다른 글
Google Apps Script : 구글 스프레드시트에서 캘린더로 일정 등록하기 - 코드 포함 (4) | 2023.05.03 |
---|