是否可以使用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。
答案 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
开关实现的。