Unix Crontab和测试要执行的命令

Unix Crontab和测试要执行的命令,unix,cron,crontab,Unix,Cron,Crontab,我对cron和crontab还很陌生 我已经编辑了crontab文件,我需要手动执行其中一个命令,这样我就可以尝试并预先测试它。我该怎么做?如果失败,是否有显示错误的模式 要“手动”执行脚本,首先必须执行以下操作使其可执行: $ chmod +x yourScriptName 那就任其一吧 $ ./yourScriptName 如果您从其路径或 $ /full/path/to/yourScriptName 从任何地方来 编写一个可以测试的shell脚本 从crontab执行该shell脚本

我对cron和crontab还很陌生

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

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

$ chmod +x yourScriptName
那就任其一吧

$ ./yourScriptName
如果您从其路径或

$ /full/path/to/yourScriptName
从任何地方来

  • 编写一个可以测试的shell脚本
  • 从crontab执行该shell脚本
  • 请记住,
    cron
    几乎不提供任何环境,因此您的脚本可能需要修复这一点。特别是,您的个人资料将不会被使用
  • 不要对你放在crontab里的东西感到奇怪
  • 在shell脚本中构建调试模式
  • 不,没有显示错误的特定模式。通常情况下,如果cron的任务是witters,那么输出会通过电子邮件发送给您。也就是说,如果执行的命令将任何内容写入标准输出或标准错误,它将向您发送标准输出和标准错误信息

    在MacOS X(10.6.7)上,我得到的环境是(通过
    crontab
    条目,如
    1237175*env>/tmp/cron.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 ...
    )
    
    env
    -i
    选项意味着“忽略所有继承的环境”;脚本将看到指定的五个值加上shell自动指定的任何值。没有参数,
    env
    报告环境;通过参数,它可以调整环境并执行命令

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