2015-09-27 218 views
0

我遇到了一个bash脚本的问题,该脚本被重复执行一个程序(不是我自己的),并将每次执行的输出追加到文本文件中。Linux stdout stderr重定向到文件:与终端输出不同

#!/bin/bash 
for run in {1..100} 
    make prog >> log.txt 2>&1 
done 

到目前为止好。问题是,在执行此操作之后,log.txt的内容与程序通常生成的终端输出非常不同。输出和错误之间 程序的输出交替,以便在终端上它可能是这个样子:

stdout- stderr- stdout- 标准错误 - ...

等。现在在文本文件中,而不是这个,stdout和stderr消息的大块“块”集中在一起。例如。在文件的开始处可能有10行stdout-output,接着是10行stderr-output,等等。

我想这是某种缓冲问题。我如何解决这个问题?

任何形式的帮助,将不胜感激。

+0

可能重复此http://stackoverflow.com/q/3465619/5303401和这个http://stackoverflow.com/q的/ 1429951/5303401 – ozy

回答

2

关闭输出缓冲可能有所帮助。两者unbuffer命令和命令stdbuf可以操纵缓冲器尺寸,例如,像这样:stdbuf -o0 -e0 yourcommandhere

+0

现在工作正常,谢谢! – Peter