如何从管道 linux 命令连续将输出发送到文件? [复制]
Posted
技术标签:
【中文标题】如何从管道 linux 命令连续将输出发送到文件? [复制]【英文标题】:How to send output to a file continuously from a piped linux command? [duplicate] 【发布时间】:2017-11-27 13:58:20 【问题描述】:以下命令每秒生成输出,持续 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 之外的其他内容。
【问题讨论】:
【参考方案1】:使用 GNU grep:添加选项 --line-buffered
以在输出中使用行缓冲。这可能会导致性能下降。
【讨论】:
【参考方案2】:我发现How to 'grep' a continuous stream?也是一个很好的答案。
sar -n DEV 1 10 | stdbuf -o0 grep lo > sar.log &
【讨论】:
以上是关于如何从管道 linux 命令连续将输出发送到文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
linux学习输入输出重定向和管道功能cat命令more命令