Python 文件在 crontab 作业上失败

Python 文件在 crontab 作业上失败

我正在使用 RPI Zerow 运行 python 代码 (Raspbian Strech-Lite)。

我需要在启动时运行 2 个文件:MQTTlogger.pySched_MQTT.py。两个文件都可以使用命令行正常运行,但是当我添加 2 个作业时,crontab只有其中一个得到执行(第二个文件)。文件名和路径都正确。

在所有日志文件中搜索/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

EDIT1:仅运行MQTTLOGGER.PY

只留MQTTlogger.pyincrontab说明是磨合的问题,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在服务可用之前尝试运行这些作业(一个或两个)。解决此问题的简单方法是添加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

你的问题是类似于这个问题中的一个,因此您可能希望参考它以获取更多信息。

您可能还想将您的内容重定向stderr到一个文件以捕获任何输出以进行调试。通过将其添加到crontab我上面列出的行的 和 中来做到这一点:

> ~/cronjoblog 2>&1

答案2

有两件事解决了我的问题:

1)添加sleepcrontab- 正如Seamus建议的:

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

2)修复代码内的路径以修复路径(如stackover flow中要求的),参考

相关内容