如何从管道 linux 命令连续将输出发送到文件?
How to send output to a file continuously from a piped linux command?
以下命令每秒生成一次输出,持续 60 秒。
sar -n DEV 1 60 | grep lo
如果我将它重定向到一个文件,文件 sar.log 会持续更新,即每秒更新一次
sar -n DEV 1 60 > sar.log &
但是,一旦通过管道将其重定向到文件,它只会在完成后(即 60 秒后)填充文件 sar.log。
sar -n DEV 1 60 | grep lo > sar.log &
如何 grep 并重定向到一个文件,以便日志文件不断更新,即每秒更新一次
我可以使用除 grep 以外的其他东西,如果它符合我选择某些东西并每秒重定向到一个文件的目的。
使用 GNU grep:添加选项 --line-buffered
以在输出上使用行缓冲。这可能会导致性能下降。
我发现 How to 'grep' a continuous stream? 也是一个很好的答案。
sar -n DEV 1 10 | stdbuf -o0 grep lo > sar.log &
以下命令每秒生成一次输出,持续 60 秒。
sar -n DEV 1 60 | grep lo
如果我将它重定向到一个文件,文件 sar.log 会持续更新,即每秒更新一次
sar -n DEV 1 60 > sar.log &
但是,一旦通过管道将其重定向到文件,它只会在完成后(即 60 秒后)填充文件 sar.log。
sar -n DEV 1 60 | grep lo > sar.log &
如何 grep 并重定向到一个文件,以便日志文件不断更新,即每秒更新一次
我可以使用除 grep 以外的其他东西,如果它符合我选择某些东西并每秒重定向到一个文件的目的。
使用 GNU grep:添加选项 --line-buffered
以在输出上使用行缓冲。这可能会导致性能下降。
我发现 How to 'grep' a continuous stream? 也是一个很好的答案。
sar -n DEV 1 10 | stdbuf -o0 grep lo > sar.log &