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

标签 linux bash grep output-buffering

<分区>

以下命令每秒生成一次输出,持续 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 以在输出上使用行缓冲。这可能会导致性能下降。

关于linux - 如何从管道 linux 命令连续将输出发送到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44730724/

相关文章:

linux - 如何知道 "cat"命令显示的行数?

linux - 是否可以让 Nix 包管理器只安装运行时依赖项?

bash - 如何在 bash 中将包含空格的变量作为循环参数传递?

bash - 使用perl将文件中的变量内容替换为另一个变量内容

linux - 添加然后删除行到另一行,只有当它不包含字符时

macos - MAC上的grep特定文件类型

linux - 检查目录(符号链接(symbolic link))是否仍指向同一位置

arrays - 在 bash 脚本中访问关联数组

java - 使用 shell 脚本启动远程 (SSH) Java 应用程序不会返回本地提示

linux - shell脚本linux减去参数grep