我想将特定'top'命令的输出写入文件.我做了一些谷歌搜索,发现可以使用以下命令完成.
top -n 10 -b > top-output.txt
Run Code Online (Sandbox Code Playgroud)
其中-n表示迭代次数,-b表示批处理模式.如果让10次迭代顶部,这非常有效.但是如果我用Ctrl-C打破命令的运行,输出文件似乎是空的.
我不知道手前的迭代次数,所以我需要手动打破它.如何在不指定迭代的情况下捕获文件顶部的输出?
我试图准确使用的命令是
top -b | grep init > top-output.txt
Run Code Online (Sandbox Code Playgroud)
并随时打破它.但它不起作用.
编辑:为了给问题提供更多的上下文,我有一个Java代码,它调用一个带有输入文件的工具.由于该工具将文件作为输入并运行一段时间,然后获取下一个文件,依此类推.我有一组100,000个文件需要输入到工具中.所以现在我正在尝试监视该特定工具(它在linux中作为一个进程运行).我无法捕获整个'top'数据作为文件,因为对于不需要的数据来说太大了.如何捕获该进程的系统统计信息并使用top将其写入文件?
Mar*_*nen 35
对我来说top -b > test.txt,top即使我打破它,也会存储好的所有输出ctrl-c.我建议先转储,然后grep生成文件.
如何使用while循环和-n 1:
while sleep 3; do
top -b -n1 | grep init > top-output.txt
done
Run Code Online (Sandbox Code Playgroud)
在所有迭代完成之前,输出似乎不会写入文件。您可以通过用这样的外部循环包装来解决这个问题:
touch top-output.txt
while true; do
top -b | grep init >> top-output.txt
done
Run Code Online (Sandbox Code Playgroud)