[转]用java取得linux系统cpu、内存的实时信息

Code:
  1. import java.io.BufferedReader;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6. import java.util.StringTokenizer;  
  7.   
  8. /** 
  9.  * 取得linux系统下的cpu、内存信息 
  10.  *  
  11.  * <p> 
  12.  *  
  13.  * @author javer QQ:84831612 
  14.  *         </p> 
  15.  *  
  16.  * @date 2005 
  17.  */  
  18. public final class LinuxSystemTool {  
  19.     /** 
  20.      * get memory by used info 
  21.      *  
  22.      * @return int[] result 
  23.      *         result.length==4;int[0]=MemTotal;int[1]=MemFree;int[2 
  24.      *         ]=SwapTotal;int[3]=SwapFree; 
  25.      * @throws IOException 
  26.      * @throws InterruptedException 
  27.      */  
  28.     public static int[] getMemInfo() throws IOException, InterruptedException {  
  29.         File file = new File("/proc/meminfo");  
  30.         BufferedReader br = new BufferedReader(new InputStreamReader(  
  31.                 new FileInputStream(file)));  
  32.         int[] result = new int[4];  
  33.         String str = null;  
  34.         StringTokenizer token = null;  
  35.         while ((str = br.readLine()) != null) {  
  36.             token = new StringTokenizer(str);  
  37.             if (!token.hasMoreTokens())  
  38.                 continue;  
  39.   
  40.             str = token.nextToken();  
  41.             if (!token.hasMoreTokens())  
  42.                 continue;  
  43.   
  44.             if (str.equalsIgnoreCase("MemTotal:"))  
  45.                 result[0] = Integer.parseInt(token.nextToken());  
  46.             else if (str.equalsIgnoreCase("MemFree:"))  
  47.                 result[1] = Integer.parseInt(token.nextToken());  
  48.             else if (str.equalsIgnoreCase("SwapTotal:"))  
  49.                 result[2] = Integer.parseInt(token.nextToken());  
  50.             else if (str.equalsIgnoreCase("SwapFree:"))  
  51.                 result[3] = Integer.parseInt(token.nextToken());  
  52.         }  
  53.   
  54.         return result;  
  55.     }  
  56.   
  57.     /** 
  58.      * get memory by used info 
  59.      *  
  60.      * @return float efficiency 
  61.      * @throws IOException 
  62.      * @throws InterruptedException 
  63.      */  
  64.     public static float getCpuInfo() throws IOException, InterruptedException {  
  65.         File file = new File("/proc/stat");  
  66.         BufferedReader br = new BufferedReader(new InputStreamReader(  
  67.                 new FileInputStream(file)));  
  68.         StringTokenizer token = new StringTokenizer(br.readLine());  
  69.         token.nextToken();  
  70.         int user1 = Integer.parseInt(token.nextToken());  
  71.         int nice1 = Integer.parseInt(token.nextToken());  
  72.         int sys1 = Integer.parseInt(token.nextToken());  
  73.         int idle1 = Integer.parseInt(token.nextToken());  
  74.   
  75.         Thread.sleep(1000);  
  76.   
  77.         br = new BufferedReader(  
  78.                 new InputStreamReader(new FileInputStream(file)));  
  79.         token = new StringTokenizer(br.readLine());  
  80.         token.nextToken();  
  81.         int user2 = Integer.parseInt(token.nextToken());  
  82.         int nice2 = Integer.parseInt(token.nextToken());  
  83.         int sys2 = Integer.parseInt(token.nextToken());  
  84.         int idle2 = Integer.parseInt(token.nextToken());  
  85.   
  86.         return (float) ((user2 + sys2 + nice2) - (user1 + sys1 + nice1))  
  87.                 / (float) ((user2 + nice2 + sys2 + idle2) - (user1 + nice1  
  88.                         + sys1 + idle1));  
  89.     }  
  90. }  

 

Code:
  1. /** 
  2.  * 测试类 
  3.  *  
  4.  * <p> 
  5.  * @author javer QQ:84831612 
  6.  * </p> 
  7.  *  
  8.  * @date 2005 
  9.  */  
  10. public class JaverTest {  
  11.     public static void main(String[] args) throws Exception {  
  12.         int[] memInfo = LinuxSystemTool.getMemInfo();  
  13.         System.out.println("MemTotal:" + memInfo[0]);  
  14.         System.out.println("MemFree:" + memInfo[1]);  
  15.         System.out.println("SwapTotal:" + memInfo[2]);  
  16.         System.out.println("SwapFree:" + memInfo[3]);  
  17.   
  18.         System.out.println("CPU利用率:" + LinuxSystemTool.getCpuInfo());  
  19.     }  
  20. }  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值