为什么我的 cron 命令没有在日志文件中输出?

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

在我的树莓派上,我使用 crontab -e (不使用 sudo)在 crontab 中输入了以下条目:

* * * * * echo "Hello World" &>> /home/pi/test.txt

只是作为一个测试。

重新启动 cron 后(sudo /etc/init.d/cron restart),会在 /home/pi/ 中创建 test.txt 文件,但内容仍为空。

为什么?

如果我在 Rasberry Pi 上的 ssh 终端中运行时不带星号,则效果很好。

我之所以走到这一步,是因为我的目标是运行 python 脚本并记录任何错误,因为有时它会停止运行,但我不知道为什么。因此我需要记录。

谢谢您的帮助!

附注我在运行 Raspbian (Debian Buster) 的 Orange Pi 上也遇到了同样的问题,但 cron 由于某种原因无法工作,所以我使用 rc.local 在启动时运行我的脚本。但同样的问题出现了:创建了日志文件但没有添加内容。

python-3.x logging cron raspberry-pi debian
2个回答
2
投票

Raspbian 似乎正在使用

dash
作为 cron 的默认 shell。
dash
符合
sh
标准,不符合
bash
标准。这意味着您不能使用
&>>
。您必须使用
>> output.log 2>&1
来代替。

您是说您的目标是运行 Python 脚本。这也有一个问题。 Python 的缓冲输出,因此如果它太短,默认情况下它不会出现在日志文件中。您可以使用

python -u
进行无缓冲输出。

我希望我的回答有意义。


0
投票
* * * * * python /home/pi/code.py 2>&1 /home/pi/code.log

您好,crontab 中上述代码片段的最后一部分会将每个日志写入文件 /home/pi/code.log

希望有帮助

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