크론/파이썬 사용

크론/파이썬 사용

내 crontab 작업이 올바르게 작성되었는지 알고 싶습니다. VPS에서 실행하고 싶지만 모니터링이 사실상 불가능합니다. 더 이상 고민하지 않고 내 크론 작업은 다음과 같습니다.

# cd into directory at 2:57 AM 
57 2 * * 1-5 cd /folder_name

# activate the virtual environment
58 2 * * 1-5 . env/bin/activate

# run the main script
59 2 * * 1-5 python main.py

# at 5pm break the script (worried the most about this part)
0 16 * * 1-5 ^C

또한 시스템 시계를 동부 시간으로 변경했습니다. 이는 cron 작업이 동부 시간대를 사용하여 실행된다는 의미입니까?

답변1

아니요, cron껍질이 아닙니다. 스크립트 작성:

#!/bin/sh
cd /folder_name
. env/bin/activate
exec python main.py

실행 가능하게 만든 다음 항목을 지정하십시오 crontab.

57 2 * * 1-5 /path/to/script

그런 다음 스크립트는 매주 월요일부터 금요일까지 현지 시간대(컴퓨터가 생각하는 시간대)의 2시 57분에 실행되어야 합니다. 메일 시스템을 올바르게 구성한 경우 결과(있는 경우)가 메일로 전송됩니다.

답변2

크론 작업이 잘못 작성되었습니다. 각 크론 작업에는 고유한 환경이 있습니다. 즉, 해당 cd명령은 후속 크론 작업과 독립적입니다.

가상 환경의 경우 가상 환경을 수동으로 활성화하고 which python직접 실행하는 것을 권장합니다. 그러면 python해당 가상 환경 내에서 항상 실행될 수 있는 전체 경로가 제공됩니다 . cron에서 이 Python 경로를 사용해야 합니다.

최종 크론탭은 다음과 같아야 합니다:

0 3 * * 1-5 /full/path/to/virtualenv/python /full/path/to/main.py

나중에 프로세스를 종료하는 경우 이 문제를 해결하는 가장 일반적인 방법은 pidfile을 사용하는 것입니다. 이를 수행하는 데 도움이 되는 몇 가지 Python 라이브러리가 있습니다. 이 답변이 주제에 대해 매우 철저하지만 crontab 문제와는 실제로 관련이 없습니다.

관련 정보