2011-05-17 123 views
0

我对cron和crontab相当陌生。crontab和测试要执行的命令

我编辑了crontab文件,我需要手动执行其中一个命令,以便我可以尝试并预先测试它。我怎么做?如果失败,是否有一个显示错误的模式?

回答

1
  1. 写一个你可以测试的shell脚本。
  2. 从crontab执行该shell脚本。
  3. 请记住,cron几乎没有提供任何环境 - 所以你的脚本可能不得不解决这个问题。特别是,您的个人资料将不会被使用。
  4. 不要喜欢你放在crontab中的东西。
  5. 在您的shell脚本中构建调试模式。

不,没有具体显示错误的模式。通常,如果cron作业有问题,输出将通过电子邮件发送给您。也就是说,如果执行的命令将任何内容写入标准输出或标准错误,它会向您发送标准输出和标准错误信息。

在MacOS X(10.6.7),我得到的环境下(通过crontab进入像12 37 17 5 * env >/tmp/cron.env):

SHELL=/bin/sh 
USER=jleffler 
PATH=/usr/bin:/bin 
PWD=/Users/jleffler 
SHLVL=1 
HOME=/Users/jleffler 
LOGNAME=jleffler 
_=/usr/bin/env 

其中,PWD_SHLVL由shell进行处理。因此,为了可靠地测试你的脚本在cron般的环境中,使用:

(cd $HOME 
env -i \ 
    SHELL=/bin/sh \ 
    USER=$USER \ 
    PATH=/usr/bin:/bin \ 
    HOME=$HOME \ 
    LOGNAME=$LOGNAME \ 
    /path/to/script/you/execute ... 
) 

-i选项env手段“忽略所有继承的环境”;该脚本将完全看到指定的五个值以及shell自动指定的任何值。没有参数,env报告环境;有参数,它调整环境并执行命令。

0

执行脚本“手动”你首先必须做,使其可执行:

$ chmod +x yourScriptName 

然后做任何

$ ./yourScriptName 
如果从它的路径执行它

$ /full/path/to/yourScriptName 

从任何地方。