【发布时间】:2015-06-08 16:54:39
【问题描述】:
我能做到:
python script.py > logfile 2>&1
一旦我使用 ctrl c 杀死它,我就可以看到日志文件的更改。但是,当我这样做时:
python script.py > logfile 2>&1 &
我看不到日志文件的任何更改。我怎样才能让我的脚本在后台运行,并且仍然让它写入日志文件?
【问题讨论】:
-
缓冲。显式刷新。
-
顺便说一句——在进入标准输出和进入文件之间工作方式不同的典型原因是标准 C 库的行为基于被写入的输出描述符是否是 TTY 而不同;默认情况下,TTY 输出是行缓冲或无缓冲的,而输出到文件则不是。 (我说“典型”是因为 Python 运行时可能会做自己的事情,而不是在这里依赖 C 库,但最终效果是相似的)。