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

问题描述 投票:0回答:2

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

*/1 * * * *  sudo /home/pi/coup/sensor.py  >> /home/pi/sensorLog.txt

它将标准输出放入sensorLog.txt,并且它生成的任何标准错误都会放入电子邮件中。

我希望 stdout 和 stderr 都进入sensorLog.txt,因此我将

1>&2
添加到 crontab,这应该使 stderr 进入与 stdout 相同的位置。 现在看起来像这样:

*/1 * * * *  sudo /home/pi/coup/sensor.py  >> /home/pi/sensorLog.txt 1>&2

现在,stdout 和 stderr 都被放入电子邮件中,并且没有任何内容添加到文件中。 这与我想要实现的目标相反。

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

sh cron
2个回答
73
投票

相反:

*/1 * * * *  sudo /home/pi/coup/sensor.py  >> /home/pi/sensorLog.txt 2>&1

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


0
投票

在 crontab 中运行

sudo
是一个奇怪的操作。 我假设 crontab 位于普通用户帐户中,那么您需要注意 sudowheel 不询问密码。

既然你有root权限,为什么不把这个命令添加到root的crontab中,而不需要'sudo'呢?

© www.soinside.com 2019 - 2024. All rights reserved.