`
chixianhuadeyu
  • 浏览: 66515 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 监控linux CPU 内存 磁盘 JVM:

阅读更多
import java.io.*;  
 
/** 
* linux 下cpu 内存 磁盘 jvm的使用监控 
* @author avery_leo 

*/ 
public class TT {  
    /** 
     * 获取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");//df -hl 查看硬盘空间  
      
 
        BufferedReader in = null;  
        try {  
            in = new BufferedReader(new InputStreamReader(p.getInputStream()));  
            String str = null;  
            String[] strArray = null;  
            int flag = 0;  
            while ((str = in.readLine()) != null) {  
                int m = 0;  
//              if (flag > 0) {  
//                  flag++;  
                    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();  
        }  
        return (usedHD / totalHD) * 100;  
    }  
 
    public static void main(String[] args) throws Exception {  
        TT cpu = new TT();  
        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