我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中。