上一主题下一主题
关键字
主题 : 调用Linux命令返回CPU使用率结果错误
级别: 北风技术菜鸟


UID: 496798
精华: 0
发帖: 1028
威望: 3697 点
学点: 2363 点
贡献: 140 点
好评: 0 点
学币: 15 个
注册时间: 2014-09-03
最后登录: 2015-03-29
楼主  发表于: 2015-03-22 14:21||

调用Linux命令返回CPU使用率结果错误

这是为了获取Linux下cpu使用率方法。 L_`Xbky  
直接运行Linux命令返回的结果是0.33,可当我通过这个方法时返回显示是我在页面中确是0.0。 FK?mS>G6  
请各位高手帮我看看,那里有问题。小弟拜谢! Udg & eEF  
public double getCPUfactor() throws IOException {       G<Th<JF)Q  
                  double cpuUsed = 0; 6qY\7R2+  
  Runtime rt = Runtime.getRuntime(); 1'gKZB)TG7  
  Process p = rt.exec("mpstat |grep all|awk '{print $4}'");// 调用linux系统的命令 MJpP!a^Q  
  BufferedReader in = null; n^3NA| A  
  try { P<TpG0~(  
   in = new BufferedReader(new InputStreamReader(p.getInputStream())); n+:m _2T  
   String str = null; j P{:A9T\  
   while ((str = in.readLine()) != null) {         & T5f H!?4  
       cpuUsed= Double.parseDouble(str); ~t1O]aO(  
   } \fkS_r,i  
   p.waitFor(); o9DYr[  
  } catch (Exception e) { vCYSm  0  
   e.printStackTrace(); .eZPp~[lAN  
  } finally { FCUVP,"T  
   in.close(); $X{B* WF  
  } q!u lE{ ^  
  return cpuUsed; S&;T_^|  
}
此帖悬赏中(剩余时间:已结束)...
最佳答案: 2 学点
热心助人剩余点数: 1 学点
级别: 北风资深评论员


UID: 497728
精华: 0
发帖: 3911
威望: 5495 点
学点: 6103 点
贡献: 172 点
好评: 0 点
学币: 67 个
注册时间: 2014-09-06
最后登录: 2015-04-07
沙发(1楼)  发表于: 2015-03-22 14:31||

可能是命令没有返回,把str打印一下,看有没有值
级别: 北风资深评论员


UID: 497728
精华: 0
发帖: 3911
威望: 5495 点
学点: 6103 点
贡献: 172 点
好评: 0 点
学币: 67 个
注册时间: 2014-09-06
最后登录: 2015-04-07
板凳(2楼)  发表于: 2015-03-22 14:31||

因为用到了管道"|",inputstream我也不知道给重定向到哪去了 O=jzz&E+  
你试下直接调用shell \}!/z]u  
{B4.G8%Z  
J****a代码   UjMWSPEBy  
rt.exec(new String[]{"/bin/sh","-c","mpstat |grep all |awk '{print $4}'"});/  
级别: 北风资深评论员


UID: 497728
精华: 0
发帖: 3911
威望: 5495 点
学点: 6103 点
贡献: 172 点
好评: 0 点
学币: 67 个
注册时间: 2014-09-06
最后登录: 2015-04-07
地板(3楼)  发表于: 2015-03-22 14:31||

你那个只取了第一行 8 8pz<$  
>efYpd#^  
nrwb6w j  
J****a代码   uMPJ  
in = new BufferedReader(new InputStreamReader(p.getInputStream()));   R7x4v  
String str = null;   -Qiay/tlu  
while ((str = in.readLine()) != null) {   0}PW?t76  
    if(str.indexOf("%") != -1) return str;   n|SsV  
    ///cpuUsed= Double.parseDouble(str);   'e7<&wm ia  
}