`
loyalbluer
  • 浏览: 41237 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Java获取Linux下的系统信息

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

相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    linux安装 java 8版

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

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

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

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

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

    关于java获取操作系统信息

    在Java编程语言中,获取操作系统的信息对于环境配置、程序调试及兼容性测试等方面具有重要意义。本文将基于给定的文件信息,深入探讨如何利用Java来获取操作系统的关键信息,并对每一条命令及其返回值进行详细解释。...

    java获取当前系统信息

    在Java编程语言中,获取当前系统的详细信息是一项基础但重要的技能,它可以帮助开发者更好地理解运行环境,对于调试、日志记录以及系统兼容性检查尤为重要。本文将深入解析如何利用Java内置的`System`类和`...

    java代码在window获取linux文件

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

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

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

    获取linux和windows上的cpu信息

    在Java中,你可以使用`java.lang.management`包下的`OperatingSystemMXBean`接口来获取CPU信息。通过调用`getSystemCpuLoad`和`getProcessCpuLoad`方法,可以获取到系统和进程的CPU利用率。将这个jar文件引入到Java...

    java在linux64环境下读取硬件网络信息

    在完成C/C++代码的编写和编译后,将`libhardware_info.so`复制到Linux系统的`/lib`或`/usr/lib`目录下,以便Java程序能够找到并加载它。如果你的系统是64位的,可能需要将其放在`/lib64`或`/usr/lib64`。 最后,在...

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

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

    java获取操作系统版本代码

    在Java编程中,获取操作系统的版本信息是一项常见的需求,这对于平台相关的功能实现或者适配具有重要意义。本篇文章将深入探讨如何使用Java来获取操作系统的信息,包括版本、名称以及如何进行系统判断。 首先,我们...

Global site tag (gtag.js) - Google Analytics