crontab 并测试要执行的命令

发布于 2024-11-08 12:45:48 字数 107 浏览 0 评论 0原文

我对 cron 和 crontab 很陌生。

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

I'm quite new to cron and crontab.

I've edited the crontab file and I need to execute manually one of commands so I can try it and test it beforehand. How do I do that? If it fails, is there a mode that shows the errors?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清眉祭 2024-11-15 12:45:48
  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_SLVL 由 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 会报告环境;通过参数,它可以调整环境并执行命令。

  1. Write a shell script that you can test.
  2. Execute that shell script from the crontab.
  3. Remember that cron provides barely any environment - so your script may have to fix that. In particular, your profile will not be used.
  4. Do not get fancy with what you put in the crontab.
  5. Build a debug mode into your shell script.

No, there isn't specifically a mode that shows errors. Usually, if the cron job witters, the output is emailed to you. That is, it sends standard output and standard error information to you if the executed command writes anything to either standard output or standard error.

On MacOS X (10.6.7), the environment I got was (via a crontab entry like 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

Of those, PWD, _ and SHLVL are handled by the shell. So, to test your script reliably in a cron-like environment, use:

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

The -i option to env means 'ignore all inherited enviroment'; the script will see exactly the five values specified plus anything the shell specifies automatically. With no arguments, env reports on the environment; with arguments, it adjusts the environment and executes a command.

红ご颜醉 2024-11-15 12:45:48

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

$ chmod +x yourScriptName

然后,

$ ./yourScriptName

如果您从其路径或

$ /full/path/to/yourScriptName

从任何地方执行它,则执行以下操作。

To execute a script "manually" you first have to make it executable by doing:

$ chmod +x yourScriptName

Then do either

$ ./yourScriptName

if you execute it from its path or

$ /full/path/to/yourScriptName

from anywhere.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文