如何从管道linux命令连续向文件发送输出?
以下命令每秒生成一次输出,持续60秒如何从管道linux命令连续向文件发送输出?,linux,bash,grep,output-buffering,Linux,Bash,Grep,Output Buffering,以下命令每秒生成一次输出,持续60秒 sar -n DEV 1 60 | grep lo sar -n DEV 1 60 | grep lo > sar.log & 如果我将其重定向到一个文件,则文件sar.log会持续更新,即每秒更新一次 sar -n DEV 1 60 > sar.log & 但是,一旦对其进行管道传输,然后将其重定向到文件,它将仅在完成后(即60秒后)填充文件sar.log sar -n DEV 1 60 | grep lo sar
sar -n DEV 1 60 | grep lo
sar -n DEV 1 60 | grep lo > sar.log &
如果我将其重定向到一个文件,则文件sar.log会持续更新,即每秒更新一次
sar -n DEV 1 60 > sar.log &
但是,一旦对其进行管道传输,然后将其重定向到文件,它将仅在完成后(即60秒后)填充文件sar.log
sar -n DEV 1 60 | grep lo
sar -n DEV 1 60 | grep lo > sar.log &
我如何grep并重定向到一个文件,以使日志文件持续更新,即每秒更新一次
sar -n DEV 1 60 > sar.log &
我可以使用grep以外的东西,如果它符合我每秒选择某个东西并重定向到某个文件的目的。使用GNU grep:Add option
--line buffered
在输出时使用line buffering。这可能会导致性能下降。我发现这也是一个很好的答案
sar -n DEV 1 10 | stdbuf -o0 grep lo > sar.log &