私はRPI Zerowを使ってPythonコード(Raspbian Strech-Lite)を実行しています。
起動時に2つのファイルを実行する必要があります:MQTTlogger.py
とSched_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