Crontab和Python编程没有完全运行

时间:2016-04-02 11:19:38

标签: python cron crontab

我正在尝试使用crontab每小时运行一个Python脚本,但我似乎无法让它工作。

如果我从终端手动运行它,Python程序运行正常并完成。

$ python /home/pi/Documents/Project/Base_Prog.py

我的crontab设置如下:

# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h  dom mon dow   command

@reboot /usr/bin/python /home/pi/Documents/Project/Base_Prog.py

0 * * * * /usr/bin/python /home/pi/Documents/Project/Base_Prog.py

0 * * * * /usr/bin/python /home/pi/Documents/SimpleCronTest.py

让我澄清一下,我遵循了建议on this similar post.我尝试了创建输出文件的简单测试脚本。但是在具有相同设置的相同crontab下,我的程序无法完成。

有趣的是,当脚本启动时使用TOP,Python窗口会短暂弹出,然后再次消失。所以我认为cron至少有点工作。

我添加了:

#!/usr/bin/env

Python行到Base_Prog.py文件的顶部。 我的Python程序是一个API scraper,它从一个文件中查找输入并将结果写入另一个文件,项目目录中的所有文件都使用chmod 777具有完全写入权限。

我对导致这种情况的原因感到茫然。

更新

syslog中简单测试和我的程序的输出日志是:

Apr  2 14:29:01 raspberrypi CRON[1455]: (pi) CMD (python /home/pi/Documents/Project/Base_Prog.py)
Apr  2 14:29:01 raspberrypi CRON[1456]: (pi) CMD (python /home/pi/Documents/CronTest.py)

2 个答案:

答案 0 :(得分:0)

我认为完整的解决方案是:

首先在python脚本的顶部添加一个SHEBANG行:

#!/usr/bin/env python

使用chmod + x

使您的脚本可执行

如果你的脚本使用stdout或者你需要知道什么是错的:

0 * * * * /usr/bin/python /home/pi/Documents/Project/Base_Prog.py >> tmp.log

只是为了澄清:

0 * * * * -means the cron will run always when the minutes are 0 (hourly)

答案 1 :(得分:0)

您需要查看 cron 执行的输出以获取任何线索,而不仅仅是从终端运行它。也许有一些许可/所有权错误或类似的东西。从cron执行,您可以将输出发送到文件以进行查看:

 0 * * * * python /home/pi/Documents/Project/Base_Prog.py 1> /dev/null 2> /home/pi/Documents/Project/Base_Prog.err

您可以在找到线索后查看/home/pi/Documents/Project/Base_Prog.err。或者您也可以通过电子邮件发送给您:

0 * * * * python /home/pi/Documents/Project/Base_Prog.py 1> /dev/null 2>&1 | mail -s "Base Program Output" you@company.com