上一主题下一主题
关键字
主题 : 调用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使用率方法。  aEUC  
直接运行Linux命令返回的结果是0.33,可当我通过这个方法时返回显示是我在页面中确是0.0。 r /v'h@  
请各位高手帮我看看,那里有问题。小弟拜谢! ]=\Mf<  
public double getCPUfactor() throws IOException {       z'@j9vT  
                  double cpuUsed = 0; lv -z[  
  Runtime rt = Runtime.getRuntime(); Rs +rlJq  
  Process p = rt.exec("mpstat |grep all|awk '{print $4}'");// 调用linux系统的命令 Q'-V\ G)11  
  BufferedReader in = null; eduaG,+k7p  
  try { V3;4,^=6Dd  
   in = new BufferedReader(new InputStreamReader(p.getInputStream())); V ]b1cDx{  
   String str = null; { 3``To$  
   while ((str = in.readLine()) != null) {         R=M"g|U6  
       cpuUsed= Double.parseDouble(str); blxAy  
   } ,#3}TDC  
   p.waitFor(); JFaxxW  
  } catch (Exception e) { OJd!g/V  
   e.printStackTrace(); Zgp]s +%E  
  } finally { >Gbj1>C}  
   in.close(); =`2nv0%2  
  } ( Lj{V}^  
  return cpuUsed; 34VyR a  
}
此帖悬赏中(剩余时间:已结束)...
最佳答案: 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我也不知道给重定向到哪去了 BI6`@}%7>  
你试下直接调用shell ` \-m qe  
0[OlJMVf  
J****a代码   '^t(=02J  
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||

你那个只取了第一行 #L57d  
t]?{"O1rC  
d1'= \PYr  
J****a代码   {CNJlr@z  
in = new BufferedReader(new InputStreamReader(p.getInputStream()));   .i^ @v<+  
String str = null;   .K`n;l Vs  
while ((str = in.readLine()) != null) {   ~ H/Zi BL@  
    if(str.indexOf("%") != -1) return str;   NQqNBI?cr  
    ///cpuUsed= Double.parseDouble(str);   "yj_v\@4  
}