크론/파이썬 사용

크론/파이썬 사용

내 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 경로를 사용해야 합니다.

최종 crontab은 다음과 같아야 합니다:

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

나중에 프로세스를 종료하는 한, 이 문제에 대한 가장 일반적인 해결책은 pidfile을 사용하는 것입니다. 이를 수행하는 데 도움이 되는 Python 라이브러리가 있습니다. 이 답변해당 주제에 대해 상당히 철저하지만 실제로 crontab 질문과 관련이 없습니다.

관련 정보