更改Crontab路径

时间:2013-07-16 04:30:56

标签: bash ubuntu cron crontab

我正在尝试使用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中设置这两个路径,但仍然无法运行作业。

可能是什么问题?谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

AFAIK,cron jobs的工作目录是他们执行的用户的家。因此,如果您的crontest.py子网中同时包含realfileDocumentscrontest.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变量已包含/