解析java中的virt-top

时间:2014-08-14 13:22:06

标签: java linux cpu-usage

是否可以使用Java解析virt-top命令的结果?

我做的第一件事就是在java中运行virt-top命令

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("virt-top -n 5");

但我在控制台中看不到任何输出。我使用eclipse作为我的编辑。 我的目标是获取guest虚拟机的CPU和内存使用量,所以我使用了virt-top,我计划解析结果。

非常感谢任何帮助。谢谢!

更新:

我使用过我在互联网上找到的代码。我能够使用命令" virt-top --stream -n 2"获得我需要的输出。但我现在的问题是解析结果。

一次迭代的例子就是这个,

"virt-top time  04:25:54 Host localhost.localdomain x86_64 4/4CPU 2301MHz 7465MB 
   ID S RDRQ WRRQ RXBY TXBY %CPU %MEM   TIME    NAME
    1 R    0    0    0    0  0.0  0.0   0:06.42 CentOS"

我只需要获得%CPU和%MEM。

2 个答案:

答案 0 :(得分:0)

使用创建过程的输入流来读取生成的输出。

pr.getInputStream()

请参阅http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html

答案 1 :(得分:0)

通常,您需要通过Process消费Process.getInputStream()对象的输出

此外,您应该通过Process.getErrorStream()消费并显示stderr。

最后,如果virt-top是基于curses的,那么您可能想要禁用ctl字符。这是通过top命令与-b开关实现的。