我最近添加了一个cron作业,但是在给出命令的同时在路径上犯了一个错误,因此,这项工作从未成功过。有没有办法测试我们所做的cron更改?
请注意,我确实从我的命令行复制并粘贴了命令,这只是一个导致此问题的迷路按键。
答案 0 :(得分:43)
当我想测试我的cron作业时,我通常将间隔设置得非常低,并密切监视日志。当我确信输入正确时,我将间隔设置回一个合理的值。
例如,每两分钟运行一次作业:
*/2 * * * * echo "Hello World"
我在我的日志文件(debian上的tail -f
)上运行/var/log/syslog
。
答案 1 :(得分:26)
此问题也在serverfault and has garnered a couple additional answers
上提出以下是Marco's solution的释义版本: (不确定最好的ediquite是否只提供链接回答或不复制别人的解决方案)
使用临时cron条目
创建环境文件* * * * * /usr/bin/env > /home/username/cron-env
然后创建一个名为run-as-cron
的shell脚本,该脚本使用该环境执行命令。
#!/bin/sh
. "$1"
exec /usr/bin/env -i "$SHELL" -c ". $1; $2"
授予执行权限
chmod +x run-as-cron
然后它就像这样使用:
./run-as-cron <cron-environment> <command>
e.g。
./run-as-cron /home/username/cron-env 'echo $PATH'
答案 2 :(得分:5)
约书亚的回答对我不起作用。两个问题:
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
没有足够的代表&#39;修复他的答案或添加评论...
答案 3 :(得分:0)
使用命令crontab -e 这将打开一个vim编辑器,你要做的就是 * * * * * /somepath/urscript.sh,确保日期和脚本路径之间有适当的空格 执行后,您可以检查/ var / spool / mail中是否有完整的脚本执行或错误跟踪。 对于测试没有办法..但是如果你的sh urscript.sh工作,那么cron tab就没有问题,因为它与你手动完全相同。