`

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());   
	    } 
}
分享到:
评论

相关推荐

    用java取得linux系统cpu、内存的实时信息

    在IT领域,特别是对于系统监控和资源管理而言,掌握如何使用Java获取Linux系统的CPU和内存实时信息是一项重要的技能。这不仅有助于系统管理员实时监控服务器的健康状况,还为开发人员提供了优化应用程序性能的关键...

    java获取linux服务器上的IP操作

    在Linux系统中,我们可以使用ip address命令来获取网络接口的信息。例如,我们可以使用以下命令来获取eth0的IP地址: ip address show eth0 这将显示eth0的IP地址信息,包括inet地址、广播地址、子网掩码等。 ...

    java读取服务器硬件信息(windowx+linux+Mac OS)

    对于Linux系统,Java可以通过执行shell命令并解析输出来获取硬件信息。例如,可以使用`/proc`目录下的文件,如`/proc/cpuinfo`和`/proc/meminfo`来获取CPU和内存信息。此外,还可以使用`lshw`命令,它提供了一个详细...

    linux 下用java 获取系统信息 cpu mem jvm等

    linux 下用java 获取系统信息 cpu mem jvm等 用java调用系统命令得到,方便实用

    Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法.pdf

    Java 获取系统信息(CPU、内存、硬盘、进程等)的相关方法 Java 获取系统信息是指通过 Java 语言获取当前系统的各种信息,包括 CPU、内存、硬盘、进程等。下面将介绍两种获取系统信息的方法。 方法一:使用 Java ...

    在Linux系统下用java执行系统命令实例讲解

    在Linux系统下,Java编程语言提供了丰富的API来执行操作系统级别的命令。这主要通过`java.lang.Runtime`类和`java.lang.ProcessBuilder`类实现。本文将深入讲解如何在Java程序中调用Linux命令,并通过实例来阐述这一...

    java获取当前系统信息

    ### 操作系统信息 操作系统相关的属性提供了对运行Java程序的主机操作系统的深入了解: - **操作系统名称**:`os.name`,如“Linux”、“Windows 10”等。 - **操作系统架构**:`os.arch`,显示了操作系统的架构...

    关于java获取操作系统信息

    在Java编程语言中,获取操作系统的信息对于环境配置、程序...开发人员可以根据需要选择合适的系统属性来获取所需的操作系统信息和其他关键数据。此外,理解这些属性的具体含义也有助于更高效地利用Java语言的各种特性。

    JAVA得到网卡物理地址(windows和Linux)

    今天,我们将讨论如何使用 Java 获取网卡物理地址在 Windows 和 Linux 两个操作系统中。 在 Windows 操作系统中,获取网卡物理地址可以使用 ipconfig 命令。ipconfig 命令可以显示当前计算机的网络配置信息,包括...

    java获取系统、硬件、设备相关信息

    java 1. 使用wmic相关命令获取windows硬件相关信息。 2. 使用shell相关的dmidecode/fdisk/ifconfig命令获取Linux硬件和系统相关信息

    Java获取系统CPU、内存、硬盘等系统信息

    本文将详细探讨如何利用Java获取Windows和Linux系统的CPU、内存以及硬盘信息。 首先,让我们聚焦于CPU信息的获取。在Java中,`java.lang.management`包提供了ManagementFactory类,它包含了获取系统管理信息的方法...

    java获取操作系统版本代码

    如果需要获取更详细的系统信息,如CPU使用率、系统负载等,可以使用`java.lang.management.ManagementFactory`创建的`OperatingSystemMXBean`实例。例如: ```java OperatingSystemMXBean osBean = ...

    linux安装 java 8版

    在Linux系统中安装Java 8版本是一个常见的任务,对于开发者来说尤其重要,因为Java是许多后端服务和应用程序的基础。本篇文章将详细讲解如何在Linux环境下安装Java Development Kit(JDK)8,以满足开发和运行Java...

    java链接linux获取系统参数.java

    java链接linux获取系统参数,JAVA程序,亲测试,可用。

    java代码在window获取linux文件

    在Java编程环境中,有时我们需要在Windows系统中远程访问Linux服务器以获取或操作文件。`JSch`库提供了一个这样的解决方案,它是一个纯Java实现的SSH2库,允许开发者连接到远程计算机并执行命令,传输文件等。本篇将...

    java在Linux下调用sap的RFC接口必备so文件 libsapjco3.so

    Java在Linux环境中调用SAP RFC接口涉及到的关键技术点包括Java与SAP的集成、Linux系统下的动态链接库(.so文件)以及SAP的RFC(远程功能调用)技术。这里将详细介绍这些知识点。 首先,SAP RFC是SAP提供的一种通信...

    获取linux和windows上的cpu信息

    首先,让我们关注Linux系统。在Linux中,获取CPU信息通常涉及到对 `/proc` 目录下的文件进行读取。`/proc/cpuinfo` 文件包含了关于处理器的详细信息,如型号、频率、核心数等。你可以通过命令行工具如`cat`或`less`...

    JAVA实现Linux中word转换pdf

    在Java编程环境中,我们可以利用各种库来实现在Linux系统中将Word文档转换为PDF。这个过程通常涉及到对文件格式的理解,以及对操作系统调用的掌握。以下是一个详细的知识点介绍: 1. **Java与Linux交互**: Java...

    java获取不同操作系统名称及Mac地址

    java获取不同操作系统的名称以及mac地址工具类,例如:windows,Linux,Unix等

    java获取服务器基本信息的方法

    以下是一些使用Java获取服务器基本信息的关键知识点: 1. **第三方库Sigar**: Sigar(System Information Gatherer and Reporter)是由Hyperic公司开发的一个跨平台的系统监控库。它提供了丰富的API来获取各种操作...

Global site tag (gtag.js) - Google Analytics