web-dev-qa-db-ja.com

Crontabでpythonスクリプトを実行

Linux crontabを使用してpythonスクリプトを実行しようとしていますが、多くの解決策が見つかりましたが、どれも機能しません。たとえば、/ etc/cron.dでanacronを編集するか、crontab -eを使用します。

このスクリプトを10分ごとに実行します。

これを構成するには、どのファイルを編集する必要がありますか?

前もって感謝します

編集

この行をファイルの最後に追加しましたが、何も変わりません。サービスを再起動する必要がありますか?

*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py

EDIT [2]

皆さん、私はソースコードをフォローしました。ここに問題があるかもしれませんが、手動で実行すると動作します:

http://Pastebin.com/qsWHNzqT

75
guisantogui

Crontab -eを使用して、こちらのチュートリアルに従ってください。

http://adminschoice.com/crontab-quick-reference

周波数の指定方法に関するガイドについては、ポイント3をご覧ください。

要件に基づいて、効果的に次のようにする必要があります。

*/10 * * * * /usr/bin/python script.py
114
Raul Marengo

で始まるファイルfoo.pyにスクリプトを入れます

#!/usr/bin/python

次に、そのスクリプトに実行許可を与えます

chmod a+x foo.py

crontabfoo.pyファイルのフルパスを使用します。

execve(2) のドキュメントを参照してください。これは Shebang を処理しています

56

あなたが言及したように何も変更しない

まず、次のようにcrontabの実行からstdinとstderrの両方をリダイレクトする必要があります。

*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py > /tmp/listener.log 2>&1

その後、ファイル/tmp/listener.logを表示して、スクリプトが期待どおりに実行されたかどうかを確認できます。

第二に、あなたが何を意味するか推測してください何でも変更するはあなたのプログラムによって作成されたファイルを見ることです:

f = file('counter', 'r+w')
json_file = file('json_file_create_server.json','r+w')

上記のcrontabジョブは、ディレクトリ/home/souza/Documets/Listenerにこれらのファイルを作成しません。cronジョブはこのディレクトリで実行されず、プログラムで相対パスを使用するためです。したがって、これらのファイルをディレクトリ/home/souza/Documets/Listenerに作成するには、次のcronジョブがトリックを実行します。

*/2 * * * * cd /home/souza/Documets/Listener && /usr/bin/python listener.py > /tmp/listener.log 2>&1

作業ディレクトリに移動し、そこからスクリプトを実行すると、所定の場所に作成されたファイルを表示できます。

14
greenqy