multitail如何缓冲其输出?

时间:2016-06-01 17:36:44

标签: python linux redhat

这可能不是问题的最佳措辞。我想在屏幕上一次看到2个文件。 我跑:

multitail ~/path/to/somefile.err ~/path/to/somefile.out

我有一个包含以下行的python脚本:

sys.stdout = open('~/path/to/somefile.out', 'a')
sys.stderr = open('~/path/to/somefile.err', 'a')

我的multitail命令似乎只输出我的.out文件,无论我把文件放在命令中的顺序。

我确认我的脚本确实正在写入文件。有趣的是,当我运行以下命令时:

echo "text" >> ~/path/to/somefile.err

突然间,我看到了多笔画面中.err文件的所有输出(包括以前没有出现的那些)!

这里发生了什么,我看不到?

P.S。这是我第一次使用multitail,所以也许我忽略了一些简单的事情。如果它意味着什么,我使用的是CentOS 7。

1 个答案:

答案 0 :(得分:1)

您需要在buffering=0的通话中传递buffering=1(针对无缓冲)或open(针对行缓存 - 可能是您想要的内容)。

默认值为buffering=-1,它等同于buffering=512,其值取决于系统,因此在写入512(或其他)字节之前,不会将任何内容写入文件。< / p>

或者,您可以将buffering设置为其默认值,并在每次希望数据显示在文件中时调用.flush()

在shell中使用>>时,将在命令退出时关闭文件,关闭意味着刷新。 (您可以使用exec >> file.txt

推迟收盘