如何从管道linux命令连续发送输出到文件?

时间:2017-06-23 22:26:30

标签: linux bash grep output-buffering

下面的命令每秒生成输出60秒。

<link rel='stylesheet' href='/css/example.css'>

如果我将其重定向到文件,则文件sar.log会连续更新,即每秒

sar -n DEV  1 60 | grep lo

但是,只要管道然后将其重定向到文件,它就会在文件sar.log完成后填充,即60秒后填充文件。

sar -n DEV  1 60 > sar.log &

如何grep和重定向到文件,以便日志文件连续更新,即每秒

我可以使用除grep之外的其他东西,如果它有助于我选择某些内容并每秒重定向到一个文件。

2 个答案:

答案 0 :(得分:5)

使用GNU grep:添加选项--line-buffered以在输出上使用行缓冲。这可能会导致性能下降。

答案 1 :(得分:1)

我发现How to 'grep' a continuous stream?也是一个很好的答案。

sar -n DEV 1 10 | stdbuf -o0 grep lo > sar.log &