我正在尝试运行一个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。您应该将 stderr和stdout 重定向到您的日志文件,这将在发生错误时提供更详细的输出,例如:
... > /home/pi/pythonscripts/cronlog.log 2>&1
或者安装 MTA,然后 cront 作业的输出将作为电子邮件发送给所有者。