`

java获取linux系统信息

    博客分类:
  • Java
 
阅读更多
package com.cmmb.util;

import java.io.*;


/**  
 * linux 下cpu 内存 磁盘 jvm的使用监控  
 * @author avery_leo  
 *  
 */  
public class DiskSpace {
	    /**  
	     * 获取cpu使用情况  
	     * @return  
	     * @throws Exception  
	     */  
	    public double getCpuUsage() throws Exception {   
	        double cpuUsed = 0;   
	  
	        Runtime rt = Runtime.getRuntime();   
	        Process p = rt.exec("top -b -n 1");// 调用系统的“top"命令   
	       
	  
	        BufferedReader in = null;   
	        try {   
	            in = new BufferedReader(new InputStreamReader(p.getInputStream()));   
	            String str = null;   
	            String[] strArray = null;   
	           
	            while ((str = in.readLine()) != null) {   
	                int m = 0;   
	                   
	                if (str.indexOf(" R ") != -1) {// 只分析正在运行的进程,top进程本身除外 &&   
	                       
	                strArray = str.split(" ");   
	                    for (String tmp : strArray) {   
	                        if (tmp.trim().length() == 0)   
	                            continue;   
	                        if (++m == 9) {// 第9列为CPU的使用百分比(RedHat   
	                               
	                            cpuUsed += Double.parseDouble(tmp);   
	  
	                        }   
	  
	                    }   
	  
	                }   
	            }   
	        } catch (Exception e) {   
	            e.printStackTrace();   
	        } finally {   
	            in.close();   
	        }   
	        return cpuUsed;   
	    }   
	/**  
	 * 内存监控  
	 * @return  
	 * @throws Exception  
	 */  
	    public double getMemUsage() throws Exception {   
	  
	        double menUsed = 0;   
	        Runtime rt = Runtime.getRuntime();   
	        Process p = rt.exec("top -b -n 1");// 调用系统的“top"命令   
	       
	  
	        BufferedReader in = null;   
	        try {   
	            in = new BufferedReader(new InputStreamReader(p.getInputStream()));   
	            String str = null;   
	            String[] strArray = null;   
	           
	            while ((str = in.readLine()) != null) {   
	                int m = 0;   
	                   
	                if (str.indexOf(" R ") != -1) {// 只分析正在运行的进程,top进程本身除外 &&   
	                    //    
	                    // System.out.println("------------------3-----------------");   
	                    strArray = str.split(" ");   
	                    for (String tmp : strArray) {   
	                        if (tmp.trim().length() == 0)   
	                            continue;   
	  
	                        if (++m == 10) {   
	                            // 9)--第10列为mem的使用百分比(RedHat 9)   
	  
	                            menUsed += Double.parseDouble(tmp);   
	  
	                        }   
	                    }   
	  
	                }   
	            }   
	        } catch (Exception e) {   
	            e.printStackTrace();   
	        } finally {   
	            in.close();   
	        }   
	        return menUsed;   
	    }   
	  
	    /** 
	     * 获取磁盘空间大小 
	     * 
	     * @return 
	     * @throws Exception 
	     */ 
	    public double getDeskUsage() throws Exception { 
	    	double totalHD = 0; 
	    	double usedHD = 0; 
	        Runtime rt = Runtime.getRuntime(); 
	        Process p = rt.exec("df -hl /home");//df -hl 查看硬盘空间 

	       
	  
	        BufferedReader in = null; 
	        try { 
	            in = new BufferedReader(new InputStreamReader(p.getInputStream())); 
	            String str = null; 
	            String[] strArray = null; 
	            while ((str = in.readLine()) != null) { 
	                int m = 0; 
	                    strArray = str.split(" "); 
	                    for (String tmp : strArray) { 
	                        if (tmp.trim().length() == 0) 
	                            continue; 
	                        ++m; 
	                      System.out.println("----tmp----" + tmp); 
	                        if (tmp.indexOf("G") != -1) { 
	                            if (m == 2) { 
	                              System.out.println("---G----" + tmp); 
	                                if (!tmp.equals("") && !tmp.equals("0")) 
	                                    totalHD += Double.parseDouble(tmp 
	                                            .substring(0, tmp.length() - 1)) * 1024; 
	  
	                            } 
	                            if (m == 3) { 
	                              System.out.println("---G----" + tmp); 
	                                if (!tmp.equals("none") && !tmp.equals("0")) 
	                                    usedHD += Double.parseDouble(tmp.substring( 
	                                            0, tmp.length() - 1)) * 1024; 
	  
	                            } 
	                        } 
	                        if (tmp.indexOf("M") != -1) { 
	                            if (m == 2) { 
	                              System.out.println("---M---" + tmp); 
	                                if (!tmp.equals("") && !tmp.equals("0")) 
	                                    totalHD += Double.parseDouble(tmp 
	                                            .substring(0, tmp.length() - 1)); 
	  
	                            } 
	                            if (m == 3) { 
	                              System.out.println("---M---" + tmp); 
	                                if (!tmp.equals("none") && !tmp.equals("0")) 
	                                    usedHD += Double.parseDouble(tmp.substring( 
	                                            0, tmp.length() - 1)); 
	                                 System.out.println("----3----" + usedHD); 
	                            } 
	                        } 
	                           
	                    } 
	  
	              } 
	        } catch (Exception e) { 
	            e.printStackTrace(); 
	        } finally { 
	            in.close(); 
	        } 
                 //上面写在userd和total写反了,懒得改了,就反着用了
	        System.out.println("----totalHD----" + usedHD);
	        System.out.println("----usedHD----" + totalHD);
	        return (totalHD / usedHD) * 100; 
	    } 
 
	  
	    public static void main(String[] args) throws Exception {   
	    	DiskSpace cpu = new DiskSpace();   
	        System.out.println("---------------cpu used:" + cpu.getCpuUsage() + "%");   
	        System.out.println("---------------mem used:" + cpu.getMemUsage() + "%");   
	        System.out.println("---------------HD used:" + cpu.getDeskUsage() + "%");   
	        System.out.println("------------jvm监控----------------------");   
	        Runtime lRuntime = Runtime.getRuntime();   
	        System.out.println("--------------Free Momery:" + lRuntime.freeMemory()+"K");   
	        System.out.println("--------------Max Momery:" + lRuntime.maxMemory()+"K");   
	        System.out.println("--------------Total Momery:" + lRuntime.totalMemory()+"K");   
	        System.out.println("---------------Available Processors :"  
	                + lRuntime.availableProcessors());   
	    } 
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics