为什么'顶部| grep>文件'不工作?

Jay*_*ark 13 linux shell io-redirection

我测试了以下命令,但它不起作用.

$> top -b -d 1 | grep java > top.log
Run Code Online (Sandbox Code Playgroud)

它不使用标准错误.我检查它使用标准输出,但top.log始终为空.为什么是这样?

dev*_*ull 27

默认情况下,grep缓冲区输出意味着top.loggrep输出超过缓冲区大小(可能因系统而异)之前不会写入任何内容.

告诉grep在输出上使用行缓冲.尝试:

top -b -d 1 | grep --line-buffered java > top.log
Run Code Online (Sandbox Code Playgroud)