我遇到了一个bash脚本的问题,该脚本被重复执行一个程序(不是我自己的程序)并将每次执行的输出附加到文本文件中。
#!/bin/bash
for run in {1..100}
make prog >> log.txt 2>&1
done
到目前为止一切顺利。问题是执行此操作后,log.txt的内容与程序通常生成的终端输出非常不同。 程序的输出在stdout和stderr之间交替,这样在终端上它可能看起来像这样:
stdout- stderr- stdout- stderr - ...
等等。现在在文本文件而不是这个文件中,有更大的“块”stdout和stderr消息集中在一起。例如。文件开头可能有10行stdout-output,后跟10行stderr-output等等。
我认为这是某种缓冲问题。我该如何解决这个问题?
任何形式的帮助都将不胜感激。
答案 0 :(得分:2)
关闭输出缓冲可能会有所帮助。 unbuffer
命令和stdbuf
命令都可以操作缓冲区大小,例如:stdbuf -o0 -e0 yourcommandhere