我测试了以下命令,但它不起作用。
$> top -b -d 1 | grep java > top.log
它不使用标准错误。我检查了它是否使用标准输出,但 top.log 始终为空。为什么是这样?
我测试了以下命令,但它不起作用。
$> 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 中。