为什么我不能将 python 脚本的标准输出重定向到文件

Why can't I redirect stdout of a python script to a file

我正在 Raspberry Pi 2 (Raspbian) 上使用 rc.local 中的命令开始我的服务 运行,如下所示:

python3.4 /home/pi/SwitchService/ServiceStart.py >/home/pi/SwitchService/log &
python3.4 /home/pi/test.py >/home/pi/log2 &

由于某些原因,尽管脚本打印到标准输出,但我在服务的日志文件中看不到任何文本。

这两个脚本如下所示:

test.py

print("Test")

ServiceStart.py

from Server import Server
print("Test")
if __name__ == "__main__":
    server = Server()

因为我无法使用 bash 解决方案,所以我尝试了 this other solution 是否对我有用。它的行为与基于 bash 的方法完全相同。因此,尽管创建了空文件,但我的服务没有向日志文件写入任何内容。

首先,确保您的脚本确实是 运行。许多调度程序和启动例程没有设置 PATH,因此它可能找不到 python3.4。尝试修改命令以包含完整路径(例如 /full/path/python3.4)。

其次,不建议在 rc.local 中包含长 运行 脚本,而没有 运行 它们在后台(the documentation 甚至说明了这一点)。 Raspberry Pi 在继续引导之前等待命令完成,因此如果它永远运行,您的 Raspberry Pi 可能永远无法完成引导。

最后,假设前两个问题已得到解决,请确保您的程序不会过度缓冲输出。您可以尝试 flushing stdout 看看是否有帮助。