如何立即在日志文件中获取stdout/stderr?

问题描述:

要运行我使用下面的bash脚本一些Python程序:如何立即在日志文件中获取stdout/stderr?

python3 /MyProg.py 0>/dev/null 1>>output_log_file 2>error_log_file 

然而,PROG只有结束后,我能得到的信息。程序运行时,这些文件中没有任何数据。

我可以重写此行为以立即获取日志数据吗?我的操作系统是Raspbian。

+1

如果您可以编辑'MyProg.py',则可以在流上调用'flush'。否则,只有在缓冲区(我的机器上的4Kb已满,或流被关闭)时才会写入。我不知道是否有办法让linux让缓冲区更小,所以它的写入更频繁。 –

我怀疑程序需要刷新输出和错误定期,通过

import sys 
sys.stdout.flush() 
sys.stderr.flush() 

似乎有是因为它采用了全缓存,而不是行缓冲的。尝试在bash命令之前使用unbuffer,并且应该立即在屏幕上显示输出。