/** * 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、内存信息 * *
@author javer QQ:84831612
* @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)); } } /** * 测试类 * *@author javer QQ:84831612
* @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()); } }