cron에서 Django 관리 명령을 실행하려고합니다. 프로젝트를 샌드 박스로 유지하기 위해 virtualenv를 사용하고 있습니다.
여기와 다른 곳에서 virtualenv와 같은 관리 명령을 실행하는 예제를 보았습니다.
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
그러나 syslog가 태스크를 시작해야 할 때 항목을 표시하더라도이 태스크는 실제로 실행되지 않습니다 (스크립트의 로그 파일이 비어 있음). 쉘에서 수동으로 라인을 실행하면 예상대로 작동합니다.
현재 cron을 통해 명령을 실행할 수있는 유일한 방법은 명령을 분리하여 바보 같은 bash 래퍼 스크립트에 넣는 것입니다.
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
편집하다:
ars는 작동하는 명령 조합을 생각해 냈습니다.
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
적어도 내 경우에는 virtualenv에 대한 activate 스크립트를 호출해도 아무런 효과가 없습니다. 이것은 쇼와 함께 작동합니다.
env
그리고 export
당신은 crontab에서 호출 랩퍼 떠들썩한 파티 스크립트에서 모두.