7

crontabPython スクリプトの実行に失敗します。Python スクリプトの実行に使用しているコマンド ラインは問題ありません。

これらは私が試した解決策です:

  • #!/usr/bin/env pythonの先頭に追加main.py
  • PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/binの先頭に追加crontab
  • chmod 777main.pyファイルに
  • service cron restart

私のcrontabは次のとおりです。

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

*/1 * * * * python /home/python_prj/main.py

/var/log/syslog のログは次のとおりです。

Nov  6 07:08:01 localhost CRON[28146]: (root) CMD (python /home/python_prj/main.py)

何もありません。

スクリプトはのmain.py下にある他のモジュールからいくつかのメソッドを呼び出しますがpython_prj、それは問題ですか?

誰でも私を助けることができますか?

4

3 に答える 3

9

main.pyスクリプトは、python_prjの下にある他のモジュールからいくつかのメソッドを呼び出しますが、それは重要ですか?

はい、そうです。すべてのモジュールは、実行時に検索可能である必要があります。これはいくつかの方法で実行できますが、crontabでPYTHONPATH変数を設定するのが最も適切な場合があります。

crontabでMAILTO変数を設定して、トレースバックを含む電子メールを受け取ることもできます。

[更新]これが私のcrontabのトップです:

www:~# crontab -l

DJANGO_SETTINGS_MODULE=djangocron.settings
PATH=...
PYTHONPATH=/home/django
MAILTO="cron-notices@example.com"
...
# m h  dom mon dow   command
10-50/10 * * * *               /home/django/cleanup_actions.py
...

(1時間の先頭を除いて、10分ごとにクリーンアップアクションを実行します)。

于 2012-11-06T12:07:50.137 に答える
4

スクリプト内のファイル アクセスはありますか? もしそうなら、スクリプトで相対パスを使用しましたか (または明示的なパスを使用しませんでしたか)?
コマンドラインから実行する場合、実際のフォルダーは、スクリプトを開始する「パス」です。cron で実行する場合、「あなたのパス」は環境変数によって異なる場合があります。
そのため、アクセスするファイルへの絶対パスを使用してみてください。

于 2014-01-27T12:01:28.623 に答える
0

スクリプトの権限を確認してください。cron で実行可能であることを確認してください。chmod +x main.py を試してください。

于 2012-11-06T16:41:17.917 に答える