2017-04-18 1 views
0

私はUnixシステムにはかなり新しいです。私は以下のようにcrontabでpythonジョブをスケジュールしようとしています。Crontabジョブスケジュール

42 15 18 4 * absolute_path_where_python_is_install absolute_path_to_python_script > absolute_path_to_output_log_file 

これは何もしません:エラー、しかし出力なし を、私は手動で以下のコードを実行したときに、誰かが私が行方不明です何を識別するために私を助けてくださいすることができ

absolute_path_where_python_is_install absolute_path_to_python_script > absolute_path_to_output_log_file 

を予想通り、それは動作しますか?

ありがとうございます。あなたは特別なPythonパッケージを必要としない場合は、crontabファイル経由でのcronを設定している

を想定し

+0

環境を確認し、そこに何かが設定されているかどうかを確認してください。たとえば、envでPYTHONPATHを設定している場合、これはcrontabの実行時には利用できません。 – gbtimmon

+0

crontabもチェックしてください。 '* * * * * date >>/tmp/ping'は、crontabが期待どおりに動作していることを確認する良い方法です。 – gbtimmon

+0

あなたのcronが 'sudo service cron status'と' grep CRON/var/log/syslog'によって実行されているかどうか確認してください。syslogからのログを参照してください。 –

答えて

0

デバッグを確認するいくつかの事項:

1.)crontabが実行されていることを確認します。あなたのデーモンが正常に動作していることを確認するために、そのファイルをチェックしてください。

2.)実行時にスクリプトからエラーを確認します。これで、標準出力のみがキャプチャされます。標準エラー出力をキャプチャし、あなたが2>&1の追加のエラーメッセージ

* * * * * python script.py > script.log 2>&1 

は両方の意味、ログファイルに送信されているファイルディスクリプタ1(標準出力)にファイル記述子2(標準エラー出力)をリダイレクトするリダイレクトでキャッチすることができるかどうかを確認stdoutとstderrはログファイルに格納されます。その後、

* * * * * env | sort > /tmp/env_in_cron 

env | sort > /tmp/env_at_runtime 

sdiff /tmp/env_at_runtme /tmp/env_in_cron 

を実行し、あなたが必要な場合があります何が彼ら(されておらず、どのように異なる気づくかどうかを確認:実行時に予想通りENVであることを

3)検証環境は)。あなたができる

どちらか何かが欠けている場合。)、単一のパラメータに

* * * * * PYTHONPATH=/python/lib/path python python-script.py > python-script.log 

Bを追加します。)、または単にフルENVを調達。

* * * * * . /home/user/.profile && python python-script.py > python-script.log 
+0

@http://stackoverflow.com/users/1158990/gbtimmonたくさんありがとうオプションbで完璧に動作します。 –

+0

私はPYTHONPATHで.profileを作成しました。 * * * * * /path/to/.profile python-script.py >> python-script.log 2>&1 –

-1

* * * * * python /path/to/file.py

あなたにvirtualenvから実行して

* * * * * /path/to/env/bin/python /path/to/file.py

cron間隔を設定するときに助けが必要な場合は、https://crontab.guruを試してください。