在Linux中如何将top命令的输出保存到文件中?

48

我想将特定的' 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”的数据,因为该文件会过大且包含不必要的数据。如何使用top捕获该进程的系统统计信息并将其写入文件?


你需要哪些统计数据?你了解“时间”吗? - Markus Mikkolainen
我想要获取%CPU和%MEM的使用统计数据。我认为'time'命令无法帮助我获得这些数据。 - Pradep
时间将为您提供墙钟时间和处理器时间,以便您可以计算CPU%平均值。那么如何找到工具的PID并重复运行“ps”以获取该PID呢? - Markus Mikkolainen
这样做行不通,因为该工具会不断关闭并重新打开。因此每次都会有不同的PID。如果能使用工具名称进行跟踪就太好了。 - Pradep
哦,那可能行得通。我不熟悉 Linux 中的 ps 命令。当我运行 ps 命令时,只会显示“时间”,你怎么获取其他详细信息,例如 CPU 和内存使用情况?我查看了 man 手册,但貌似也没有帮助。 - Pradep
ps auxf 是我默认使用的命令。ps u 可以提供各种有用的信息。 - Markus Mikkolainen
11个回答

-1

通过top命令,我们可以看到所有进程及其PID(进程ID)。 要仅打印一个进程的top输出,请使用以下命令:

$ top –p PID

要将任何进程的 top 命令保存到文件中,请使用以下命令:

top -p $PROCESS_ID -b  > top.log

其中 > 将标准输出重定向到文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接