添加"2>&1"时 cron 作业未运行



我正在使用crontab -e在没有root权限的机器上设置cron作业。

crontab 中的初始命令如下所示:

0 10 * * * /bin/bash /path/myscript.sh >/path/log 

我发现脚本没有运行,因为系统创建了一个空日志文件。然后我在上述命令的末尾添加2>&1

0 10 * * * /bin/bash /path/myscript.sh >/path/log 2>&1

并尝试找到任何错误。奇怪的是,通过添加2>&1,cron 甚至没有创建一个空的日志文件。无。

添加

2>&1时这里发生了什么吗?

cron 的默认行为是通过电子邮件向运行 cronjob 的用户发送 stderr。

man cron

执行命令时,任何输出都会邮寄给 crontab(或在 MAILTO 环境中指定的用户 变量,如果存在)。

为了规避这种行为,您确实可以像尝试的那样重定向 stderr。但是,它需要一些额外的调整。

如从 Cron重定向带有日期的 stderr 到日志文件中所示,您可以使用子 shell 将 stderr 重定向到 stdin,然后正常重定向所有内容:(cron expression 2>&1) > /your/log/file 。在您的情况下:

0 10 * * * (/bin/bash /path/myscript.sh 2>&1) >/path/log

相关内容

  • 没有找到相关文章

最新更新