我正在尝试使用cronjob来运行基本的Python脚本作为概念验证练习。 Python脚本如下:
#!/usr/bin/python
with open('realfile','a+') as f:
f.write('testwrite\n')
我的脚本(以及'realfile'文件)位于我的主目录下面的'Documents'目录中(即$ HOME / Documents)。
我的crontab如下:
*/1 * * * * /$HOME/Documents/crontest.py
由于某种原因,crontab不会每分钟都执行脚本。该脚本工作正常,因为我从命令行手动运行它(使用./crontest.py)。此外,当脚本位于主目录并且crontab只是简单时,crontab完全正常工作:
*/1 * * * * /$HOME/crontest.py
我使用'locate crontest.py'检查了'crontest.py'的位置,我得到了以下两个位置:
/home/meric/crontest.py
/usr/bin/crontest.py
我尝试在我的crontab中设置这两个路径,但仍然无法运行作业。
可能是什么问题?谢谢你的帮助!
答案 0 :(得分:1)
AFAIK,cron jobs的工作目录是他们执行的用户的家。因此,如果您的crontest.py
子网中同时包含realfile
和Documents
,crontest.py
应该执行,然后在您的家中找不到realfile
时失败。欧文说,重新检查路径;另外,您可以使用它在任意工作目录中运行:
*/1 * * * * cd /home/meric/Documents && ./crontest.py
答案 1 :(得分:0)
您的脚本不在目录中:
/$HOME/Documents/crontest.py
你在底部说它在:
/home/meric/crontest.py /usr/bin/crontest.py
为什么不将其复制到:
$HOME/Documents/crontest.py
再试一次。
答案 2 :(得分:0)
我想你错过了python代码的绝对路径。试试这个:
#!/usr/bin/python
import os
with open((os.getenv('HOME') + '/Documents/' +'realfile'),'a+') as f:
f.write('testwrite\n')
编辑cron作业:
*/1 * * * * $HOME/Documents/crontest.py
因为$HOME
变量已包含/