crontabでPythonスクリプトを実行するのに問題がありますか?

crontabでPythonスクリプトを実行するのに問題がありますか?

実際には、日付と現在のラズベリーパイ温度のcsvであるファイル/home/projects/temperature_logger/analyze.pyに対していくつかの処理を実行するスクリプトがあります。temp.logPythonスクリプトは結果を.logファイルにも記録します。コマンドラインから呼び出すと期待sudo python3 analyze.pyどおりに動作しますが、何らかの理由でcrontabで動作させることはできません。

sudo chmod +x analyze.py私もそこに走ったsudo chmod ugo+w analyze.py

私のwhereis python3言葉は/usr/bin/python3。私のスクリプトの一番上のshebanganalyze.py#!/usr/bin/python3

私のcrontabスクリプトは次のとおりです。 * * * * * /usr/bin/python3 /home/projects/temperature_logger/analyze.py

テスト目的で私が今実際に実行しているのは

if __name__ == '__main__':
    logging.info("running file!")

sudo python3 analyze.py私はanalyze.pyにありますが、ディレクトリから手動で呼び出さないと、私のログファイルに埋め込まれているのを見ることはできません。

私がここで何を間違っているのか?システムログにはエラーが表示されないようですが、理解していないようです。写真についてお詫び申し上げます。 PuTTy端末からコピーする方法がわかりません。ここに画像の説明を入力してください。

更新:私のユーザーに対するフルアクセスubuntu権を追加しましたsudo chmod -R a+rwx /home/projects/temperature_logger。その後、crontabを変更し、ルートcronを消去し、ubuntu cronファイルの下にPythonスクリプトへの呼び出しを配置し​​ました。これでsyslogでこれを見ることができます。 ここに画像の説明を入力してください。

エラーが表示されないようです。ただし、これを呼び出すとスクリプトがpython3 analyze.pyファイルに正しく書き込まれますが、scripts.logcronから呼び出すとsyslogが実行中であることが示されます。ロギングは表示されません。

解決済み:これは、私のユーザーアカウントのホームディレクトリとスクリプトの現在の作業ディレクトリが何であるかを誤解したためです。私のanalyze.pyスクリプトはlogging.basicConfig(filename='scripts.log', ...)ディレクトリで実行したときにsudo書き込みますが/home/projects/temperature_logger/scripts.log、ユーザーのcronファイルから呼び出すときに書き込みます/home/ubuntu/scripts.log

ベストアンサー1

scripts.logをどのように書いたかはわかりませんが、login.infoを使用しているかどうかをテストするには、ロギング用の正しいデフォルト設定が設定されていることを確認してください。このように...

if __name__ == '__main__':
    logging.basicConfig(filename='test.log',level=logging.DEBUG)
    logging.info("running file!")

おすすめ記事