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

时间:2013-08-30 05:16:18

标签: linux shell io-redirection

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

$> top -b -d 1 | grep java > top.log

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

2 个答案:

答案 0 :(得分:24)

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

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

top -b -d 1 | grep --line-buffered java > top.log

答案 1 :(得分:2)

在我的嵌入式机器中,grep没有--line-buffered选项。所以我为自己使用了这个解决方法:

while :;do top -b -n 1 | grep java >> top.log;done &

通过这种方式,我可以在后台运行一个监视器来运行像" java"并将所有结果保存在top.log文件中。