gpt4 book ai didi

java - java中用top命令查找进程信息

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:12 25 4
gpt4 key购买 nike

我想使用top 命令获取进程信息。我有下面的代码,但它不起作用,它只是存在没有任何输出的程序。我的目标是获取进程名称、进程 ID 和内存使用情况,但那是后面的部分。目前,我一直在使用 grep 在 Java 中使用 top 命令获取进程信息。

public void getProcessInfo(String processName) {
Runtime rt = Runtime.getRuntime();
try {
String[] cmd = { "/bin/sh", "-c", "top | grep " + processName };
Process proc = rt.exec(cmd);
InputStream stdin = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace(e);
}
}

最佳答案

这个问题已经被问过很多次了:

在正常模式下,top 命令不会输出到stdout,这就是为什么您不能简单地将其输出通过管道传输到另一个 CLI 实用程序的原因你试着去做。相反,您必须使用 -b 标志将命令切换到“批处理模式”。此外,如果要处理结果,则必须将迭代次数限制为单次(在非交互模式下进一步迭代没有意义):

top -b -n 1 | grep "whatever"

这记录在命令手册页中:man top

祝您项目愉快!

关于java - java中用top命令查找进程信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31099216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com