cron 作业未 运行 添加“2>&1”

cron job not running with adding "2>&1"

我正在我没有 root 权限的机器上使用 crontab -e 设置一个 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 的默认行为是通过电子邮件向用户发送 stderr 运行 cronjob。

来自man cron

When executing commands, any output is mailed to the owner of the crontab (or to the user specified in the MAILTO environment variable in the crontab, if such exists).

为了避免这种行为,您确实可以像您尝试的那样重定向 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