【发布时间】:2012-07-28 14:33:00
【问题描述】:
我想将特定“top”命令的输出写入文件。我做了一些谷歌搜索,发现可以使用以下命令来完成。
top -n 10 -b > top-output.txt
其中-n 指定迭代次数,-b 用于批处理模式。如果让 top 进行 10 次迭代,这将非常有效。但是如果我用 Ctrl-C 中断命令的运行,输出文件似乎是空的。
我不会事先知道迭代次数,所以我需要手动打破它。如何在不指定迭代的情况下捕获文件中 top 的输出?
我要准确使用的命令是
top -b | grep init > top-output.txt
只要我想就可以打破它。但它不起作用。
编辑:为了给这个问题提供更多的上下文,我有一个 Java 代码,它调用一个带有输入文件的工具。正如该工具将文件作为输入并运行一段时间,然后获取下一个文件,依此类推。我有一组 100,000 个文件需要提供给该工具。所以现在我正在尝试监视该特定工具(它在 Linux 中作为进程运行)。我无法将整个“顶部”数据捕获为文件,因为不需要的数据太大。如何仅捕获该进程的系统统计信息并使用 top 将其写入文件?
【问题讨论】:
-
你想要什么统计数据?你知道“时间”吗?
-
我想要 %CPU 和 %MEM 使用情况统计信息。我不认为“时间”会帮助我得到这些。
-
时间最终会给你挂钟时间和处理器时间,这样你就可以计算cpu%的平均值。找出工具的 PID 并为该 PID 反复运行“ps”怎么样?
-
这不起作用,因为该工具会不断关闭并再次重新打开。所以每次的PID都不一样。如果我可以使用工具的名称进行跟踪,那就太好了。
-
哦,这可行。我对linux中的ps不熟悉。当我做 ps 时,我只是得到“时间”,你如何在 ps 中获得 CPU 和 MEM 等其他细节?我查看了手册页,但这似乎也没有帮助。