在Linux中的Java中运行CPU Utilization命令

时间:2015-04-25 00:20:29

标签: java linux cpu-usage

我正在编写一个将在Linux机器上运行的Java程序。我想获得系统的CPU利用率。为了获得机器的CPU利用率,我使用命令:

top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

然后我从java代码中调用此命令,但我没有得到任何输出。正常的linux命令如ls适用于我。

我的代码是:

public class HelloWorld{

     public static void main(String []args){
         String s;
        Process p;
        try {
           p = Runtime.getRuntime().exec("top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'");


            BufferedReader br = new BufferedReader(
                new InputStreamReader(p.getInputStream()));
            while ((s = br.readLine()) != null)
                System.out.println("line: " + s);
             p.waitFor();
            System.out.println ("exit: " + p.exitValue());
            p.destroy();
        } catch (Exception e) {}
     }
}

1 个答案:

答案 0 :(得分:0)

要使用管道,您需要在shell中运行命令:

ProcessBuilder b = new ProcessBuilder("/bin/sh", "-c",
      "top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'");

p = b.start();

另外,请注意您的命令在其他语言环境中失败。 top的输出也可能不同。