Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python multitail如何缓冲其输出?_Python_Linux_Redhat - Fatal编程技术网

Python multitail如何缓冲其输出?

Python multitail如何缓冲其输出?,python,linux,redhat,Python,Linux,Redhat,这可能不是这个问题的最佳措辞。我试图在屏幕上同时看到2个文件。 我运行: 我有一个包含以下行的python脚本: sys.stdout = open('~/path/to/somefile.out', 'a') sys.stderr = open('~/path/to/somefile.err', 'a') 我的multitail命令似乎只输出.out文件,而不管我在命令中放置文件的顺序如何 我验证了我的脚本确实正在写入文件。同样有趣的是,当我运行以下命令时: echo "text" >

这可能不是这个问题的最佳措辞。我试图在屏幕上同时看到2个文件。 我运行:

我有一个包含以下行的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
突然,我在multitail屏幕上看到了.err文件的所有输出(包括以前没有显示的输出)

这里发生了什么我看不见的事


另外,这是我第一次使用multitail,所以我可能忽略了一些简单的东西。如果有什么意义的话,我正在使用CentOS 7。

您需要在调用
打开时传递
缓冲=0
(对于无缓冲)或
缓冲=1
(对于行缓冲-可能是您想要的)

默认值为
buffering=-1
,相当于
buffering=512
,其值取决于系统,因此在写入512(或其他)字节之前,不会向文件写入任何内容


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


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

stderr(.err)可能正在被缓冲,在缓冲足够的信息后,它将全部显示。在您的计算机上查找
unbuffer
,如果存在,您可以
unbuffer
单个输出cmd(不确定在
python
中执行什么操作)。您可能可以执行
取消缓冲python3 mypython.py
。在GNUCoreutils中,还有
stdbuf
,它做同样的事情,但可能需要不同的调用。检查
man stdbuf
。祝你好运
echo "text" >> ~/path/to/somefile.err