如何将stderr重定向到cron作业中的文件

Por*_*Man 12 crontab sh

我在我的crontab中有一个像这样设置的cron作业:

*/1 * * * *  sudo /home/pi/coup/sensor.py  >> /home/pi/sensorLog.txt
Run Code Online (Sandbox Code Playgroud)

它将stdout放入sensorLog.txt,它生成的任何stderr都会被放入电子邮件中.

我希望stdout和stderr都进入sensorLog.txt,所以我添加1>&2到crontab,这应该让stderr进入与stdout相同的位置.它现在看起来像这样:

*/1 * * * *  sudo /home/pi/coup/sensor.py  >> /home/pi/sensorLog.txt 1>&2
Run Code Online (Sandbox Code Playgroud)

现在,stdout和stderr都被放入电子邮件中,并且没有任何内容添加到文件中.这与我想要完成的事情相反.

如何让stdout和stderr重定向到文件?

mau*_*uro 26

反过来说:

*/1 * * * *  sudo /home/pi/coup/sensor.py  >> /home/pi/sensorLog.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

2>&1将标准错误(2)重定向到标准输出(1),然后将其重定向到您的日志文件.所以,最后,stderr和stdout都会转到你的sensorLog.txt

  • 非常重要的注释,如果有人询问 cron 是否没有日志,则应在 google 搜索的第一页上显示:`2>&1` 应该在重定向到文件之后。`... 2>&1 >>$log` 不起作用,请改用 `... >>$log 2>&1`。 (4认同)