Crontab并测试要执行的命令

时间:2011-05-17 09:15:00

标签: unix cron crontab

我对cron和crontab很新。

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

2 个答案:

答案 0 :(得分:1)

  1. 编写一个可以测试的shell脚本。
  2. 从crontab执行该shell脚本。
  3. 请记住,cron几乎不提供任何环境 - 因此您的脚本可能需要修复它。特别是,您的个人资料将不会被使用。
  4. 不要对你在crontab中放入的内容感到满意。
  5. 在shell脚本中构建调试模式。
  6. 不,没有专门的模式显示错误。通常,如果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的{​​{1}}选项意味着“忽略所有继承的环境”;该脚本将完全看到指定的五个值以及shell自动指定的任何值。没有参数,env报告环境;通过参数,它可以调整环境并执行命令。

答案 1 :(得分:0)

要“手动”执行脚本,首先必须通过执行以下操作使其可执行:

$ chmod +x yourScriptName

然后做任何一次

$ ./yourScriptName

如果您从路径或

执行它
$ /full/path/to/yourScriptName

来自任何地方。