Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux中用Java运行CPU利用率命令_Java_Linux_Cpu Usage - Fatal编程技术网

在Linux中用Java运行CPU利用率命令

在Linux中用Java运行CPU利用率命令,java,linux,cpu-usage,Java,Linux,Cpu Usage,我正在编写一个Java程序,它将在Linux机器上运行。我想得到系统的CPU利用率。为了获得机器的cpu利用率,我使用以下命令: top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}' 然后我从java代码中调用这个命令,但没有得到任何输出。像ls这样的普通linux命令对我来说很有用 我的代码是: public class HelloWorld{ public static void mai

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

top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
然后我从java代码中调用这个命令,但没有得到任何输出。像ls这样的普通linux命令对我来说很有用

我的代码是:

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) {}
     }
}

要使用管道,需要在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的输出也可能会有所不同

你的方法确实奏效了。但是它没有打印出来。我将它输出到一个文件并读取该文件的内容。好吧,由于您的命令对我无效,我不得不更改它。然而,它确实打印了一些东西。我唯一做的改变是:top-bn 2-d 0.01 | grep-I'cpu'| tail-n1 | gawk'{print$2+$4+$6}'