Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1891020
  • 博文数量: 606
  • 博客积分: 9991
  • 博客等级: 中将
  • 技术积分: 5725
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-17 19:07
文章分类

全部博文(606)

文章存档

2011年(10)

2010年(67)

2009年(155)

2008年(386)

分类: Java

2010-05-20 16:29:20

import java.io.BufferedReader;
import java.io.InputStreamReader;

/*
 * Copyright xuanwu.com All right reserved.
 */


/**
 * @author fisher
 * @version 1.0 2010-5-20 下午04:09:51
 */

public class JavaLinux {
    
    /**
     * 获取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();
        }
        return (usedHD / totalHD) * 100;
    }
  
    public static void main(String[] args) throws Exception {
        JavaLinux cpu = new JavaLinux();
        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());
    }

}


阅读(1699) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~