我的 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 重定向到文件?
相反:
*/1 * * * * sudo /home/pi/coup/sensor.py >> /home/pi/sensorLog.txt 2>&1
2>&1
会将标准错误 (2) 重定向到标准输出 (1),而标准输出 (1) 又会重定向到您的日志文件。所以,最后,stderr 和 stdout 都会转到你的 sensorLog.txt
在 crontab 中运行
sudo
是一个奇怪的操作。 我假设 crontab 位于普通用户帐户中,那么您需要注意 sudowheel 不询问密码。
既然你有root权限,为什么不把这个命令添加到root的crontab中,而不需要'sudo'呢?