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のアクティブ化スクリプトを呼び出しても何も起こりませんでした。これは上手くいきます。
env
、export
それらすべてをcrontabから呼び出すbashスクリプトラッパーにダンプすることです。