crontabジョブでPythonファイルが失敗する

crontabジョブでPythonファイルが失敗する

私はRPI Zerowを使ってPythonコード(Raspbian Strech-Lite)を実行しています。

起動時に2つのファイルを実行する必要があります:MQTTlogger.pySched_MQTT.py。どちらのファイルもコマンドラインを使用すると正常に実行されますが、2つのタスクを追加するとcrontabそのうちの1つだけ(2番目のファイル)が実行されます。ファイル名とパスの両方が正しいです。

すべてのログファイルを検索しても、/var/log起動中にエラーが発生したという証拠は表示されませんでした。

理由をご存知ですか?

@reboot /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/MQTTlogger.py
@reboot /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/Sched_MQTT.py

編集1:ちょうど実行してくださいMQTTLOGGER.PY

ただ去るMQTTlogger.pyことは、順番に走るのではなく、crontab走る問題であることを意味します。crontab

crontabタスクではファイルの実行に失敗しましたが、コマンドラインから実行すると成功するのはなぜですか?どのようにデバッグできますか?

EDIT2:crontabエラーをキャッチ

@reboot /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/MQTTlogger.py >> /home/guy/crontab.log 2>&1

生産する:

File "/home/guy/github/SmartHome_SoC/MQTTswitches/MQTTlogger.py", line 1, in <module>
    import paho.mqtt.client as mqtt
ImportError: No module named 'paho'

MQTTパッケージのパスに関連しているようです。

ベストアンサー1

最も可能性の高い問題は、cronサービスが利用可能になる前にこれらのタスク(1つまたは両方)を実行しようとすることです。この問題を解決する簡単な方法は、sleep必要なサービスが開始されるのを待つ遅延を追加することです。

@reboot sleep 10; /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/MQTTlogger.py && /usr/bin/python3 /home/guy/github/SmartHome_SoC/MQTTswitches/Sched_MQTT.py

あなたの問題はこれらの質問の1つに似ています。ですので詳細は該当ページをご覧ください。

デバッグ用の出力をキャプチャするためにコンテンツをファイルにstderrリダイレクトすることもできます。crontab上記の行の合計にこれを追加するだけです。

> ~/cronjoblog 2>&1

おすすめ記事