cron作业没有添加“2>& 1”

时间:2015-03-11 16:43:19

标签: bash cron crontab stderr

我正在使用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

时,想知道这里发生了什么

1 个答案:

答案 0 :(得分:3)

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

来自man cron

  

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

要实现此行为,您确实可以像尝试一样重定向stderr。但是,它需要一些额外的调整。

Redirect stderr with date to log file from Cron所示,您可以使用子shell将stderr重定向到stdin,然后正常重定向所有内容:(cron expression 2>&1) > /your/log/file。在你的情况下:

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