您的位置:首页 > 运维架构 > Linux

用java取得linux系统cpu、内存的实时信息(参考别人代码)

2008-04-20 16:10 615 查看
/**
  * cat /proc/cpuinfo - cpu (i.e. vendor, mhz, flags like mmx)
* cat /proc/interrupts - 中断
  * cat /proc/ioports - 设备io端口
  * cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)
  * cat /proc/partitions - 所有设备的所有分区
  * cat /proc/pci - pci设备的信息
  * cat /proc/swaps - 所有swap分区的信息
  * cat /proc/version - linux的版本号 相当于 uname -r
  */

import java.io.BufferedReader;
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.util.StringTokenizer;
  /**
  * 取得linux系统下的cpu、内存信息
  *
  * <p>@author javer QQ:84831612</p>
  * @date 2005
  */
  public final class LinuxSystemTool
  {
   /**
   * get memory by used info
   *
   * @return int[] result
   * result.length==4;int[0]=MemTotal;int[1]=MemFree;int[2]=SwapTotal;int[3]=SwapFree;
   * @throws IOException
   * @throws InterruptedException
   */
   public static int[] getMemInfo() throws IOException, InterruptedException
   {
   File file = new File("/proc/meminfo");
   BufferedReader br = new BufferedReader(new InputStreamReader(
   new FileInputStream(file)));
   int[] result = new int[4];
   String str = null;
   StringTokenizer token = null;
   while((str = br.readLine()) != null)
   {
   token = new StringTokenizer(str);
   if(!token.hasMoreTokens())
   continue;
  
   str = token.nextToken();
   if(!token.hasMoreTokens())
   continue;
  
   if(str.equalsIgnoreCase("MemTotal:"))
   result[0] = Integer.parseInt(token.nextToken());
   else if(str.equalsIgnoreCase("MemFree:"))
   result[1] = Integer.parseInt(token.nextToken());
   else if(str.equalsIgnoreCase("SwapTotal:"))
   result[2] = Integer.parseInt(token.nextToken());
   else if(str.equalsIgnoreCase("SwapFree:"))
   result[3] = Integer.parseInt(token.nextToken());
   }
  
   return result;
   }
   /**
   * get memory by used info
   *
   * @return float efficiency
   * @throws IOException
   * @throws InterruptedException
   */
   public static float getCpuInfo() throws IOException, InterruptedException
   {
   File file = new File("/proc/stat");
   BufferedReader br = new BufferedReader(new InputStreamReader(
   new FileInputStream(file)));
   StringTokenizer token = new StringTokenizer(br.readLine());
   token.nextToken();
   int user1 = Integer.parseInt(token.nextToken());
   int nice1 = Integer.parseInt(token.nextToken());
   int sys1 = Integer.parseInt(token.nextToken());
   int idle1 = Integer.parseInt(token.nextToken());
  
   Thread.sleep(1000);
  
  br = new BufferedReader(
   new InputStreamReader(new FileInputStream(file)));
   token = new StringTokenizer(br.readLine());
   token.nextToken();
   int user2 = Integer.parseInt(token.nextToken());
   int nice2 = Integer.parseInt(token.nextToken());
   int sys2 = Integer.parseInt(token.nextToken());
   int idle2 = Integer.parseInt(token.nextToken());
   return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));
   }
  }
  /**
  * 测试类
  *
  * <p>@author javer QQ:84831612</p>
  * @date 2005
  */
  public class JaverTest
  {
   public static void main(String[] args) throws Exception
   {
   int[] memInfo = LinuxSystemTool.getMemInfo();
   System.out.println("MemTotal:" + memInfo[0]);
   System.out.println("MemFree:" + memInfo[1]);
   System.out.println("SwapTotal:" + memInfo[2]);
   System.out.println("SwapFree:" + memInfo[3]);
   System.out.println("CPU利用率:" + LinuxSystemTool.getCpuInfo());
   }
  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: