我最近添加了一个cron作业,但在发出命令时在路径中出错,因此作业从未成功。有什么方法可以测试我们已经完成的cron更改吗?测试运行cron条目
请注意,我确实复制并粘贴了命令行中的命令,这只是一个流氓按键造成的。
我最近添加了一个cron作业,但在发出命令时在路径中出错,因此作业从未成功。有什么方法可以测试我们已经完成的cron更改吗?测试运行cron条目
请注意,我确实复制并粘贴了命令行中的命令,这只是一个流氓按键造成的。
这个问题也被问过serverfault and has garnered a couple additional answers
以下是Marco's solution转述的版本: (不知道是否最好ediquite没有提供链接只能回答或不复制别人的解决方案)
使用临时cron项创建一个环境文件
* * * * * /usr/bin/env > /home/username/cron-env
然后创建一个名为run-as-cron
一个shell脚本执行使用塔指令t环境。
#!/bin/sh
. "$1"
exec /usr/bin/env -i "$SHELL" -c ". $1; $2"
然后它被用于这样的:
run-as-cron <cron-environment> <command>
例如
run-as-cron /home/username/cron-env 'echo $PATH'
当我想测试我的cron作业时,我通常将间隔设置得非常低,并密切监视日志。当我确信输入正确时,我将间隔设置回理智的值。
例如,运行作业每两分钟:
*/2 * * * * echo "Hello World"
而且我在我的日志文件运行tail -f
(在Debian /var/log/syslog
)。
乔舒亚的答案不适用于我。两个问题:在cron-env
文件
变量不会被导出(set -a
需要)。
脚本仍然绑定到当前tty(需要setsid
)。
脚本run-as-cron
应
#!/bin/sh
. "$1"
exec setsid /usr/bin/env -i "$SHELL" -c "set -a; . $1; $2" </dev/null
没有足够的代表”来解决他的答案或添加评论...
使用命令crontab -e命令 这将打开一个vim编辑器所有你需要做的是 * * * * * /somepath/urscript.sh,确保在日期和脚本路径之间有适当的空格 执行后,你可以检入/ var/spool /邮件会有脚本执行或错误的完整跟踪。 对于测试是没有办法..但如果你的urscript.sh工作,然后cron选项卡将没有问题,因为它是手动完全相同的事情。
你从哪里得到命令**运行-as-cron的**? –
@IgorGanapolsky我不确定,但它可能是上面的shell脚本的名称。 – ptf
“创建一个名为run-as-cron的shell脚本” – RichardAtHome