実際には、日付と現在のラズベリーパイ温度のcsvであるファイル/home/projects/temperature_logger/analyze.py
に対していくつかの処理を実行するスクリプトがあります。temp.log
Pythonスクリプトは結果を.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.log
cronから呼び出すと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!")