【问题标题】:parsing virt-top in java在java中解析virt-top
【发布时间】:2014-08-14 13:22:06
【问题描述】:

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

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

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

但我在控制台中看不到任何输出。我使用 eclipse 作为我的编辑器。 我的目标是获取来宾的 CPU 和内存使用情况,所以我使用了 virt-top 并打算解析结果。

任何帮助将不胜感激。谢谢!

更新:

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

1 次迭代的示例是这样的,

"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。

【问题讨论】:

    标签: java linux cpu-usage


    【解决方案1】:

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

    pr.getInputStream()
    

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

    【讨论】:

    • 我将把我的 relpy 放在我的帖子的编辑形式中,因为在评论部分很难理解它。谢谢!
    【解决方案2】:

    一般来说,您需要通过Process.getInputStream() 使用Process 对象的输出

    另外,您可能应该通过Process.getErrorStream() 使用和显示标准错误。

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

    【讨论】:

    • 我将把我的 relpy 放在我的帖子的编辑形式中,因为在评论部分很难理解它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2011-04-23
    • 2012-02-26
    • 2016-10-31
    • 2015-09-24
    • 2018-05-11
    相关资源
    最近更新 更多