为什么'top | grep>文件“不工作?

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

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

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

默认情况下, grep缓冲区输出意味着什么都不会被写入到top.log直到grep输出超过缓冲区的大小(这可能在不同的系统上有所不同)。

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

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

在我的嵌入式机器上,grep没有–line-buffered选项。 所以我用我的这个解决方法:

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

通过这种方式,我可以在后台运行一个像“java”这样的程序,并将所有结果保存在文件top.log中。