2013-07-16 166 views
0

我试图让一个cronjob运行一个基本的Python脚本作为概念验证练习。该Python脚本去如下:更改Cronjob路径

#!/usr/bin/python 
with open('realfile','a+') as f: 
    f.write('testwrite\n') 

我的脚本是在一个“文档”目录是一个低于我的主目录(即$ HOME /文件)位于(连同“REALFILE”文件)。

我的crontab如下:

*/1 * * * * /$HOME/Documents/crontest.py 

出于某种原因,在crontab不执行脚本的每一分钟,因为它应该。该脚本工作正常,因为我从命令行手动运行它(使用./crontest.py)。此外,crontab的工作完全没问题的脚本是位于主目录何时crontab的很干脆:

*/1 * * * * /$HOME/crontest.py 

我已经检查使用“定位crontest.py”,我的“crontest.py”的位置得到了以下两个位置:
/home/meric/crontest.py /usr/bin/crontest.py

我想在我的crontab设置这两条路径,并且仍在作业将不会运行。

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

+0

使用完全展开,同时在crontab条目绝对路径和你的脚本,看看是否这有助于。 – mnagel

+0

另外,如果您的电子邮件设置(nullmailer?)配置正确,则应该向您发送一封包含错误详细信息的电子邮件。 – mnagel

回答

1

AFAIK,cron jobs的工作目录是他们执行的用户的家。因此,如果您在Documents子目录中同时存在crontest.pyrealfile,则应执行crontest.py,然后在其家中找不到realfile时失败。像欧文说的那样重新检查路径;另外,你可以用它在任意工作目录下运行:

*/1 * * * * cd /home/meric/Documents && ./crontest.py 
+0

感谢这工作! – MEric

0

您的脚本不在目录:

/$HOME/Documents/crontest.py 

你说在底部,它在:

/home/meric/crontest.py /usr/bin/crontest.py 

为什么不把它复制到:

$HOME/Documents/crontest.py 

,并尝试再次。

+0

事情是,我的脚本实际上位于该目录中。我不知道为什么'找到crontest.py'给出了这两个路径,'crontest.py'实际上位于$ HOME/Documents/crontest.py – MEric

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变量已经包含了/