Python 代码通过 cron 作业未运行



我正在尝试运行一个python3脚本来检查电子邮件中的特定条件,每天在特定时间。

我可以看到 crontab 调用了命令,但脚本没有给我我需要的结果,即似乎没有运行。我可以在系统日志中看到 cron 执行:

Aug 3 16:25:01 raspberrypi/USR/SBIN/CRON[4597]: (pi( CMD (cd/home/pi/pythonscripts(

Aug 3 16:25:01 raspberrypi/USR/SBIN/CRON[4598]: (pi( CMD (sudo python3 dfj_gmail_test_v1g.py>/home/pi/pythonscripts/cronlog.log(

Aug 3 16:25:02 Raspberrypi/USR/SBIN/CRON[4595]:(CRON(信息(未安装MTA,丢弃输出(

python脚本需要运行,检查gmail,如果发现带有特定主题的某个电子邮件,它应该通过GPIO打开我的覆盆子上的LED,这对我来说比其他任何事情都更像是一个测试。如果我从命令行本身运行脚本(使用我的 crontab 中的行(,脚本会进行检查并点亮 led。所以剧本本身很好。关于如何获取有关为什么 python 脚本无法通过 cron 工作的更多信息的任何想法?

如果需要,我可以添加python 3代码

似乎你有两个不同的 cron 工作,一个在做

cd /home/pi/pythonscripts

和另一个

sudo python3 dfj_gmail_test_v1g.py > /home/pi/pythonscripts/cronlog.log

这些是独立的作业,第一个不会影响第二个作业,因此第二个作业的工作目录不会更改,也不会找到脚本。如果您希望此功能正常工作,则需要对两者使用一个命令,例如:

cd /home/pi/pythonscripts && sudo python3 dfj_gmail_test_v1g.py > /home/pi/pythonscripts/cronlog.log

或者,如果工作目录并不重要,则提供 python 文件的完全限定路径:

sudo python3 /home/pi/pythonscripts/dfj_gmail_test_v1g.py

另外,使用 crontab 中的sudo,请考虑直接使用 root 用户的 contab。您应该将 stderrstdout 重定向到您的日志文件,这将在发生错误时提供更详细的输出,例如:

... > /home/pi/pythonscripts/cronlog.log 2>&1

或者安装 MTA,然后 cront 作业的输出将作为电子邮件发送给所有者。

最新更新