我正在尝试使用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)
答案 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