Hyperic-Sigar是一个收集系统各项底层信息的工具集.他有如下特点:
1. 收集信息全面
收集CPU,MEM,NETWORK,PROCESS,IOSTAT等
使用Sigar,你完全可以模仿出cpuinfo,meminfo,top,free,ifconfig,ipconfig,netstat,route,df,du,ps,ls等多种unix平台和windows平台的指令.
2.跨平台,支持多数平台
支持的平台包括:windows系列(32系列,IA64系列,AMD64系列),linux系列,freeBsd系列,HPUnix系列,Sun solaris/Sparc/Sparc64系列,macOs系列,AIX系列等
3.提供的API接口全面
sigar本身由C语言开发而成,提供了丰富的API接口,包括:JAVA,.NET,PERL,PHP,PYTHON,RUBY.Sigar.jar包是通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar依赖sigar-amd64-winnt.dll或sigar-x86-winnt.dll,linux操作系统下则依赖libsigar-amd64-linux.so或libsigar-x86-linux.so……而Sigar.jar还依赖于jug-asl-2.0.0.jar、log4j-1.2.14.jar、Junit.jar,
4.下载地址
Hyperic-hq官方网站:http://www.hyperic.com
Sigar.jar下载地址:http://sigar.hyperic.com
public class CpuInfo extends SigarCommandBase { public boolean displayTimes = true; public static void main(String[] args) throws Exception { //先加载siga动太库 在不同的平台只要加载特定的动态库 //在IDE环境中,可以不加载动态库 设置natinve lib patch location 既可 CpuInfo cpuInfo = new CpuInfo(); cpuInfo.processCommand(args); System.out.println(cpuInfo.getMac()); } public CpuInfo(Shell shell) { super(shell); } public CpuInfo() { super(); } public String getUsageShort() { return "Display cpu information"; } private void output(CpuPerc cpu) { println("User Time....." + CpuPerc.format(cpu.getUser())); println("Sys Time......" + CpuPerc.format(cpu.getSys())); println("Idle Time....." + CpuPerc.format(cpu.getIdle())); println("Wait Time....." + CpuPerc.format(cpu.getWait())); println("Nice Time....." + CpuPerc.format(cpu.getNice())); println("Combined......" + CpuPerc.format(cpu.getCombined())); println("Irq Time......" + CpuPerc.format(cpu.getIrq())); if (SigarLoader.IS_LINUX) { println("SoftIrq Time.." + CpuPerc.format(cpu.getSoftIrq())); println("Stolen Time...." + CpuPerc.format(cpu.getStolen())); } println(""); } public void output(String[] args) throws SigarException { org.hyperic.sigar.CpuInfo[] infos = this.sigar.getCpuInfoList(); CpuPerc[] cpus = this.sigar.getCpuPercList(); org.hyperic.sigar.CpuInfo info = infos[0]; long cacheSize = info.getCacheSize(); println("Vendor........." + info.getVendor()); println("Model.........." + info.getModel()); println("Mhz............" + info.getMhz()); println("Total CPUs....." + info.getTotalCores()); if ((info.getTotalCores() != info.getTotalSockets()) || (info.getCoresPerSocket() > info.getTotalCores())) { println("Physical CPUs.." + info.getTotalSockets()); println("Cores per CPU.." + info.getCoresPerSocket()); } if (cacheSize != Sigar.FIELD_NOTIMPL) { println("Cache size...." + cacheSize); } println(""); if (!this.displayTimes) { return; } for (int i = 0; i < cpus.length; i++) { println("CPU " + i + "........."); output(cpus[i]); } println("Totals........"); output(this.sigar.getCpuPerc()); StringBuffer sb = new StringBuffer("cpu号=" + getCPUSerial() + "\n"); String[] interfaces = sigar.getNetInterfaceList(); if (interfaces != null && interfaces.length > 0) sb.append("第一个网卡号=" + sigar.getNetInterfaceConfig(interfaces[0]).getHwaddr()); org.hyperic.sigar.FileSystem[] filesystems = sigar.getFileSystemList(); if (filesystems != null && filesystems.length > 0) sb.append("\n" + "硬盘第一个分区的卷标=" + getHDSerial(filesystems[0].getDevName())); System.out.println(sb.toString()); } /** * 返回CPU的闲置率 */ public static double getCpuIdle() { Sigar sigar = null; try { sigar = new Sigar(); return sigar.getCpuPerc().getIdle(); } catch (Throwable t) { t.printStackTrace(); } finally { if (sigar != null) sigar.close(); } return 0; } /** * @param drive 硬盘驱动器分区 如C,D * @return 该分区的卷标 */ public static String getHDSerial(String drive) { String result = ""; try { File file = File.createTempFile("tmp", ".vbs"); file.deleteOnExit(); FileWriter fw = new java.io.FileWriter(file); String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n" + "Set colDrives = objFSO.Drives\n" + "Set objDrive = colDrives.item(\"" + drive + "\")\n" + "Wscript.Echo objDrive.SerialNumber"; fw.write(vbs); fw.close(); Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath()); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = input.readLine()) != null) { result += line; } input.close(); file.delete(); } catch (Exception e) { } if (result.trim().length() < 1 || result == null) { result = "无磁盘ID被读取"; } return result.trim(); } /** * 获取CPU号,多CPU时,只取第一个 * @return */ public static String getCPUSerial() { String result = ""; try { File file = File.createTempFile("tmp", ".vbs"); file.deleteOnExit(); FileWriter fw = new java.io.FileWriter(file); String vbs = "On Error Resume Next \r\n\r\n" + "strComputer = \".\" \r\n" + "Set objWMIService = GetObject(\"winmgmts:\" _ \r\n" + " & \"{impersonationLevel=impersonate}!\\\\\" & strComputer & \"\\root\\cimv2\") \r\n" + "Set colItems = objWMIService.ExecQuery(\"Select * from Win32_Processor\") \r\n " + "For Each objItem in colItems\r\n " + " Wscript.Echo objItem.ProcessorId \r\n " + " exit for ' do the first cpu only! \r\n" + "Next "; fw.write(vbs); fw.close(); Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath()); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = input.readLine()) != null) { result += line; } input.close(); file.delete(); } catch (Exception e) { e.fillInStackTrace(); } if (result.trim().length() < 1 || result == null) { result = "无CPU_ID被读取"; } return result.trim(); } }
相关推荐
OSUtil.java public static void main(String[] args) { try { // System信息,从jvm获取 property(); System.out.println("----------------------------------"); // cpu信息 cpu(); System.out.println(...
本篇文章将深入探讨如何使用Sigar库在Java中读取硬件信息,并介绍相关jar包和dll文件的使用。 Sigar是一个跨平台的系统信息工具,由Hyperic公司开发,现在由Eclipse基金会维护。它提供了一个简单的接口来获取各种...
Java通过Sigar开源Jar包获取计算机信息是一种常见的系统监控和管理技术。Sigar(System Information Gatherer and Reporter)是由Hyperic公司开发的一个跨平台、跨语言的库,用于获取操作系统和网络设备的各种性能...
标题中的“sigar java 监控 本地”指的是使用开源库SIGAR(System Information Gatherer and Reporter)来监控Java应用程序在本地操作系统上的运行状态,包括CPU使用率、内存占用、磁盘I/O等关键指标。SIGAR是一个跨...
Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar 依赖sigar-amd64-winnt.dll或sigar-x86-...
他们可能创建了一个后台服务,定期调用Sigar的API,收集并处理系统参数,然后将这些信息展示在控制台或者存储在数据库中,以便进一步分析。这样的系统监控方案不仅提供了实时反馈,还有助于历史数据的记录,方便进行...
基于java的开发源码-sigar_mirror(系统信息收集API_Sigar).zip 基于java的开发源码-sigar_mirror(系统信息收集API_Sigar).zip 基于java的开发源码-sigar_mirror(系统信息收集API_Sigar).zip 基于java的开发源码-...
这个压缩包"基于Java的sigar_mirror(系统信息收集API_Sigar).zip"很显然是为了帮助开发者了解如何在Java项目中使用Sigar库。 Sigar库由Hypertable项目开发并维护,它支持多种操作系统,包括但不限于Linux、Windows...
要使用sigar.jar,首先需要将其添加到项目的类路径中,然后就可以通过Java代码调用其提供的方法来获取服务器信息。 以下是一些常见的使用示例: 1. 获取CPU信息: 可以使用`CpuPerc`类来获取CPU的使用率,包括...
Sigar(System Information Gatherer and Reporter)是一个跨平台的系统信息收集库,它提供了丰富的API来获取系统级别的信息,包括内存使用、CPU负载、网络状态等。在Java中集成Sigar库,可以方便地进行系统级别的...
Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,由Hypertable组织开发。它提供了一种统一的API,允许开发者在多种操作系统上获取系统级别的信息,包括内存、CPU、磁盘、网络...
通过JNI(Java Native Interface)技术,Sigar API允许Java程序调用C语言实现的底层系统调用,从而获得操作系统级别的详细信息。 在Java中使用Sigar API,首先需要添加对应的jar依赖到项目中,这个zip文件可能就...
Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,由Hypertable组织开发。它提供了一种统一的接口,允许开发者在多种操作系统上获取各种系统级别的信息,包括但不限于CPU状态、...
Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,它提供了一种简单的方法来获取操作系统级别的信息,包括CPU、内存、网络、磁盘和其他资源的状态。本项目将详细介绍如何利用...
总的来说,这个"Java运用sigar.jar获取服务器信息测试类"的目标是展示如何在Java程序中利用`sigar.jar`库来收集和报告服务器的详细信息。通过对CPU、内存、网络和操作系统的监控,可以帮助我们更好地理解服务器的...
JAVA源码sigar-mirror(系统信息收集API-Sigar)
这个项目示例主要展示了如何使用SIGAR库1.6版本来收集和分析本地系统的各种信息,包括JVM、内存、操作系统、文件系统和网络状态。以下是这些知识点的详细说明: 1. **Java虚拟机(JVM)信息**: SIGAR库可以获取...
Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集工具,它提供了一种简单的方式来获取操作系统级别的信息,如CPU使用率、内存状态、网络接口统计、进程信息等。在Java环境中,通过...
java资源sigar_mirror(系统信息收集API_Sigar)提取方式是百度网盘分享地址
这个"基于Java的实例源码-sigar-mirror(系统信息收集API-Sigar).zip"文件包含了一系列的Java代码示例,用于展示如何使用Sigar库来获取和处理这些信息。 1. **Sigar简介**:Sigar是由Hyperic公司开发的,现在由...