这可能不是问题的最佳措辞。我想在屏幕上一次看到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。
答案 0 :(得分:1)
您需要在buffering=0
的通话中传递buffering=1
(针对无缓冲)或open
(针对行缓存 - 可能是您想要的内容)。
默认值为buffering=-1
,它等同于buffering=512
,其值取决于系统,因此在写入512(或其他)字节之前,不会将任何内容写入文件。< / p>
或者,您可以将buffering
设置为其默认值,并在每次希望数据显示在文件中时调用.flush()
。
在shell中使用>>
时,将在命令退出时关闭文件,关闭意味着刷新。 (您可以使用exec >> file.txt
)