linux 测试运行cron条目

ryoqjall  于 2023-05-28  发布在  Linux
关注(0)|答案(4)|浏览(202)

我最近添加了一个cron作业,但在给出命令时在路径中犯了一个错误,因此作业从未成功。有什么方法可以测试我们所做的cron更改吗?
请注意,我确实复制并粘贴了命令从我的命令行,这只是一个流浪按键,造成这一点。

zd287kbt

zd287kbt1#

当我想测试我的cron作业时,我通常将间隔设置得很低,并密切监视日志。当我确信输入是正确的时,我将间隔设置回正常值。
例如,每两分钟运行一次作业:
*/2 * * * * echo "Hello World"
然后我在日志文件中运行tail -f(在debian上是/var/log/syslog)。

nue99wik

nue99wik2#

这个问题也在serverfault and has garnered a couple additional answers上被提出
以下是Marco's solution的释义版本:(不确定最好的礼仪是不提供链接,只回答或不复制别人的解决方案)
创建一个带有临时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>

例如

./run-as-cron /home/username/cron-env 'echo $PATH'
fae0ux8s

fae0ux8s3#

约书亚的回答对我不起作用。两个问题:

  • 不导出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

没有足够的代表修复他的答案或添加评论...

j2datikz

j2datikz4#

使用命令crontab -e
这将打开一个编辑器,你所要做的就是:

* * * * * /somepath/urscript.sh

确保在日期和脚本路径之间有适当的空格
执行后,您可以在/var/spool/mail<user>中检查脚本执行或错误的完整踪迹。测试没有办法。但如果你的sh urscript.sh工作,那么cron选项卡将没有问题,因为它是完全相同的事情,你手动做。

相关问题