2017-08-03 69 views
0

我想运行一个python3脚本来检查特定条件的电子邮件,每天在特定的时间。python代码通过cron作业没有运行

我可以看到crontab调用这些命令,但脚本不会给我我需要的结果,即.e.似乎并没有运行。我可以看到在syslog cron的执行:

8月3日16时25分01秒树莓派/ usr/sbin目录/ CRON [4597]:(PI)CMD(坎德拉/家/ PI/pythonscripts)

8月3日16时25分01秒树莓派/ usr/sbin目录/ CRON [4598]:(PI)CMD(命令和python3 dfj_gmail_test_v1g.py> /home/pi/pythonscripts/cronlog.log)

8月3日16时25分:02 raspberrypi/USR/SBIN/CRON [4595] :(CRON)信息(未安装MTA,丢弃输出)

python脚本需要运行ch eck gmail,如果在某个主题中发现某个电子邮件,它应该通过我的树莓上的GPIO打开一个LED,这对我来说比对其他任何事情都更为考验。如果我从命令行本身运行脚本(使用我的crontab中的行),脚本执行检查并点亮led。所以剧本本身很好。有关如何获得更多信息,为什么python脚本不能通过cron工作的任何想法?

如果需要,我可以添加蟒蛇3码

回答

0

看来你有两个不同的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 

或者给完全合格的路径蟒蛇文件,如果工作目录并不重要:

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

此外,从crontab中使用sudo的instad,请考虑直接使用root用户的contab。你应该重定向标准错误标准输出到你的日志文件,这将使你更加的相关详细输出错误的情况下,例如:

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

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

+0

这是很好的建议。有没有办法让我可以在1分钟的时间间隔内执行相同的cron执行,而不是设定时间? –

+0

是的,您可以使用'/间隔'指定一个间隔,例如'*/1 * * * *'会每分钟执行一次cronjob。有关更多示例,请参见[crontab(5)](http://man7.org/linux/man-pages/man5/crontab.5.html#EXAMPLE_CRON_FILE)手册页。 – mata