我试图每分钟在cron服务器上运行我的python脚本,但不知何故它不运行。我的脚本在本地运行良好。
*/1 * * * * python /home/ana/cronjobs/ele/transfer.py
在我的transfer.py文件的顶部,我有:
#!/usr/bin/python
# -*- coding: utf-8 -*-
仍然没有运行。任何线索?
答案 0 :(得分:1)
我认为在你的cron工作中你需要给出绝对的路径,因为你不必知道当cron踢的时候你在哪里。
变化
*/1 * * * * python /home/ana/cronjobs/ele/transfer.py
到
*/1 * * * * /usr/bin/python /home/ana/cronjobs/ele/transfer.py
答案 1 :(得分:1)
答案来自我在评论中与OP的讨论。
要检查STDOUT / STDERR,请运行下面的cron
将其保存在/tmp/cron_out
中:
* * * * * python /home/ana/cronjobs/ele/transfer.py >/tmp/cron_out 2>&1
现在,文件/tmp/cron_out
包含:
ImportError: No module named pathlib
所以解决这个问题很明显,即安装pathlib
(pip install pathlib
)。需要注意的是,pathlib
包含在3.4中的标准库中。
注意:
由于cron
使用一组有限的环境变量运行,并且大多数值都重置为默认值,因此使用绝对路径执行可执行文件始终是个好主意:
* * * * * /usr/bin/python /home/ana/cronjobs/ele/transfer.py
此外,您拥有/usr/bin/python
,因此更简单的方法是使脚本可执行:
chmod u+x /home/ana/cronjobs/ele/transfer.py
并仅在crontab
:
* * * * * /home/ana/cronjobs/ele/transfer.py