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