【问题标题】:Crontab and testing a command to be executedcrontab 和测试要执行的命令
【发布时间】:2011-08-27 02:04:51
【问题描述】:

我对 cron 和 crontab 很陌生。

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

【问题讨论】:

    标签: unix cron 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 ...
    )
    

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

    【讨论】:

      【解决方案2】:

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

      $ chmod +x yourScriptName
      

      然后做任何一个

      $ ./yourScriptName
      

      如果你从它的路径执行它或者

      $ /full/path/to/yourScriptName
      

      从任何地方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-26
        • 2011-09-15
        • 1970-01-01
        • 2020-05-27
        • 2017-04-21
        • 2018-09-16
        相关资源
        最近更新 更多