2015-09-27 159 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

相關問題