1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java使用siger开源包获取服务器硬件信息(CPU 内存 网络 io等)

Java使用siger开源包获取服务器硬件信息(CPU 内存 网络 io等)

时间:2021-03-15 12:16:44

相关推荐

Java使用siger开源包获取服务器硬件信息(CPU 内存 网络 io等)

Java使用siger开源包获取服务器硬件信息(CPU 内存 网络 io等)

通过使用第三方开源jar包sigar.jar我们可以获得本地的信息

1.下载sigar.jar

sigar官方主页

sigar-1.6.4.zip

2.按照主页上的说明解压包后将相应的文件copy到java路径。比如windows32位操作系统需要将lib中sigar-x86-winnt.dll文件拷贝到java SDK目录的bin内

参考官方主页上的配置项。

3.代码实现

示例java项目下载地址:/detail/jifeng3518/4305325

.InetAddress;

.UnknownHostException;

importjava.util.Map;

importjava.util.Properties;

importorg.hyperic.sigar.CpuInfo;

importorg.hyperic.sigar.CpuPerc;

importorg.hyperic.sigar.FileSystem;

importorg.hyperic.sigar.FileSystemUsage;

importorg.hyperic.sigar.Mem;

importorg.Flags;

importorg.InterfaceConfig;

importorg.InterfaceStat;

importorg.hyperic.sigar.OperatingSystem;

importorg.hyperic.sigar.Sigar;

importorg.hyperic.sigar.SigarException;

importorg.hyperic.sigar.Swap;

importorg.hyperic.sigar.Who;

publicclassRuntimeTest{

publicstaticvoidmain(String[]args){

try{

//System信息,从jvm获取

property();

System.out.println("----------------------------------");

//cpu信息

cpu();

System.out.println("----------------------------------");

//内存信息

memory();

System.out.println("----------------------------------");

//操作系统信息

os();

System.out.println("----------------------------------");

//用户信息

who();

System.out.println("----------------------------------");

//文件系统信息

file();

System.out.println("----------------------------------");

//网络信息

net();

System.out.println("----------------------------------");

//以太网信息

ethernet();

System.out.println("----------------------------------");

}catch(Exceptione1){

e1.printStackTrace();

}

}

privatestaticvoidproperty()throwsUnknownHostException{

Runtimer=Runtime.getRuntime();

Propertiesprops=System.getProperties();

InetAddressaddr;

addr=InetAddress.getLocalHost();

Stringip=addr.getHostAddress();

Map<String,String>map=System.getenv();

StringuserName=map.get("USERNAME");//获取用户名

StringcomputerName=map.get("COMPUTERNAME");//获取计算机名

StringuserDomain=map.get("USERDOMAIN");//获取计算机域名

System.out.println("用户名:"+userName);

System.out.println("计算机名:"+computerName);

System.out.println("计算机域名:"+userDomain);

System.out.println("本地ip地址:"+ip);

System.out.println("本地主机名:"+addr.getHostName());

System.out.println("JVM可以使用的总内存:"+r.totalMemory());

System.out.println("JVM可以使用的剩余内存:"+r.freeMemory());

System.out.println("JVM可以使用的处理器个数:"+r.availableProcessors());

System.out.println("Java的运行环境版本:"+props.getProperty("java.version"));

System.out.println("Java的运行环境供应商:"+props.getProperty("java.vendor"));

System.out.println("Java供应商的URL:"+props.getProperty("java.vendor.url"));

System.out.println("Java的安装路径:"+props.getProperty("java.home"));

System.out.println("Java的虚拟机规范版本:"+props.getProperty("java.vm.specification.version"));

System.out.println("Java的虚拟机规范供应商:"+props.getProperty("java.vm.specification.vendor"));

System.out.println("Java的虚拟机规范名称:"+props.getProperty("java.vm.specification.name"));

System.out.println("Java的虚拟机实现版本:"+props.getProperty("java.vm.version"));

System.out.println("Java的虚拟机实现供应商:"+props.getProperty("java.vm.vendor"));

System.out.println("Java的虚拟机实现名称:"+props.getProperty("java.vm.name"));

System.out.println("Java运行时环境规范版本:"+props.getProperty("java.specification.version"));

System.out.println("Java运行时环境规范供应商:"+props.getProperty("java.specification.vender"));

System.out.println("Java运行时环境规范名称:"+props.getProperty("java.specification.name"));

System.out.println("Java的类格式版本号:"+props.getProperty("java.class.version"));

System.out.println("Java的类路径:"+props.getProperty("java.class.path"));

System.out.println("加载库时搜索的路径列表:"+props.getProperty("java.library.path"));

System.out.println("默认的临时文件路径:"+props.getProperty("java.io.tmpdir"));

System.out.println("一个或多个扩展目录的路径:"+props.getProperty("java.ext.dirs"));

System.out.println("操作系统的名称:"+props.getProperty("os.name"));

System.out.println("操作系统的构架:"+props.getProperty("os.arch"));

System.out.println("操作系统的版本:"+props.getProperty("os.version"));

System.out.println("文件分隔符:"+props.getProperty("file.separator"));

System.out.println("路径分隔符:"+props.getProperty("path.separator"));

System.out.println("行分隔符:"+props.getProperty("line.separator"));

System.out.println("用户的账户名称:"+props.getProperty("user.name"));

System.out.println("用户的主目录:"+props.getProperty("user.home"));

System.out.println("用户的当前工作目录:"+props.getProperty("user.dir"));

}

privatestaticvoidmemory()throwsSigarException{

Sigarsigar=newSigar();

Memmem=sigar.getMem();

//内存总量

System.out.println("内存总量:"+mem.getTotal()/1024L+"Kav");

//当前内存使用量

System.out.println("当前内存使用量:"+mem.getUsed()/1024L+"Kused");

//当前内存剩余量

System.out.println("当前内存剩余量:"+mem.getFree()/1024L+"Kfree");

Swapswap=sigar.getSwap();

//交换区总量

System.out.println("交换区总量:"+swap.getTotal()/1024L+"Kav");

//当前交换区使用量

System.out.println("当前交换区使用量:"+swap.getUsed()/1024L+"Kused");

//当前交换区剩余量

System.out.println("当前交换区剩余量:"+swap.getFree()/1024L+"Kfree");

}

privatestaticvoidcpu()throwsSigarException{

Sigarsigar=newSigar();

CpuInfoinfos[]=sigar.getCpuInfoList();

CpuPerccpuList[]=null;

cpuList=sigar.getCpuPercList();

for(inti=0;i<infos.length;i++){//不管是单块CPU还是多CPU都适用

CpuInfoinfo=infos[i];

System.out.println("第"+(i+1)+"块CPU信息");

System.out.println("CPU的总量MHz:"+info.getMhz());//CPU的总量MHz

System.out.println("CPU生产商:"+info.getVendor());//获得CPU的卖主,如:Intel

System.out.println("CPU类别:"+info.getModel());//获得CPU的类别,如:Celeron

System.out.println("CPU缓存数量:"+info.getCacheSize());//缓冲存储器数量

printCpuPerc(cpuList[i]);

}

}

privatestaticvoidprintCpuPerc(CpuPerccpu){

System.out.println("CPU用户使用率:"+CpuPerc.format(cpu.getUser()));//用户使用率

System.out.println("CPU系统使用率:"+CpuPerc.format(cpu.getSys()));//系统使用率

System.out.println("CPU当前等待率:"+CpuPerc.format(cpu.getWait()));//当前等待率

System.out.println("CPU当前错误率:"+CpuPerc.format(cpu.getNice()));//

System.out.println("CPU当前空闲率:"+CpuPerc.format(cpu.getIdle()));//当前空闲率

System.out.println("CPU总的使用率:"+CpuPerc.format(cpu.getCombined()));//总的使用率

}

privatestaticvoidos(){

OperatingSystemOS=OperatingSystem.getInstance();

//操作系统内核类型如:386、486、586等x86

System.out.println("操作系统:"+OS.getArch());

System.out.println("操作系统CpuEndian():"+OS.getCpuEndian());//

System.out.println("操作系统DataModel():"+OS.getDataModel());//

//系统描述

System.out.println("操作系统的描述:"+OS.getDescription());

//操作系统类型

//System.out.println("OS.getName():"+OS.getName());

//System.out.println("OS.getPatchLevel():"+OS.getPatchLevel());//

//操作系统的卖主

System.out.println("操作系统的卖主:"+OS.getVendor());

//卖主名称

System.out.println("操作系统的卖主名:"+OS.getVendorCodeName());

//操作系统名称

System.out.println("操作系统名称:"+OS.getVendorName());

//操作系统卖主类型

System.out.println("操作系统卖主类型:"+OS.getVendorVersion());

//操作系统的版本号

System.out.println("操作系统的版本号:"+OS.getVersion());

}

privatestaticvoidwho()throwsSigarException{

Sigarsigar=newSigar();

Whowho[]=sigar.getWhoList();

if(who!=null&&who.length>0){

for(inti=0;i<who.length;i++){

//System.out.println("当前系统进程表中的用户名"+String.valueOf(i));

Who_who=who[i];

System.out.println("用户控制台:"+_who.getDevice());

System.out.println("用户host:"+_who.getHost());

//System.out.println("getTime():"+_who.getTime());

//当前系统进程表中的用户名

System.out.println("当前系统进程表中的用户名:"+_who.getUser());

}

}

}

privatestaticvoidfile()throwsException{

Sigarsigar=newSigar();

FileSystemfslist[]=sigar.getFileSystemList();

for(inti=0;i<fslist.length;i++){

System.out.println("分区的盘符名称"+i);

FileSystemfs=fslist[i];

//分区的盘符名称

System.out.println("盘符名称:"+fs.getDevName());

//分区的盘符名称

System.out.println("盘符路径:"+fs.getDirName());

System.out.println("盘符标志:"+fs.getFlags());//

//文件系统类型,比如FAT32、NTFS

System.out.println("盘符类型:"+fs.getSysTypeName());

//文件系统类型名,比如本地硬盘、光驱、网络文件系统等

System.out.println("盘符类型名:"+fs.getTypeName());

//文件系统类型

System.out.println("盘符文件系统类型:"+fs.getType());

FileSystemUsageusage=null;

usage=sigar.getFileSystemUsage(fs.getDirName());

switch(fs.getType()){

case0://TYPE_UNKNOWN:未知

break;

case1://TYPE_NONE

break;

case2://TYPE_LOCAL_DISK:本地硬盘

//文件系统总大小

System.out.println(fs.getDevName()+"总大小:"+usage.getTotal()+"KB");

//文件系统剩余大小

System.out.println(fs.getDevName()+"剩余大小:"+usage.getFree()+"KB");

//文件系统可用大小

System.out.println(fs.getDevName()+"可用大小:"+usage.getAvail()+"KB");

//文件系统已经使用量

System.out.println(fs.getDevName()+"已经使用量:"+usage.getUsed()+"KB");

doubleusePercent=usage.getUsePercent()*100D;

//文件系统资源的利用率

System.out.println(fs.getDevName()+"资源的利用率:"+usePercent+"%");

break;

case3://TYPE_NETWORK:网络

break;

case4://TYPE_RAM_DISK:闪存

break;

case5://TYPE_CDROM:光驱

break;

case6://TYPE_SWAP:页面交换

break;

}

System.out.println(fs.getDevName()+"读出:"+usage.getDiskReads());

System.out.println(fs.getDevName()+"写入:"+usage.getDiskWrites());

}

return;

}

privatestaticvoidnet()throwsException{

Sigarsigar=newSigar();

StringifNames[]=sigar.getNetInterfaceList();

for(inti=0;i<ifNames.length;i++){

Stringname=ifNames[i];

NetInterfaceConfigifconfig=sigar.getNetInterfaceConfig(name);

System.out.println("网络设备名:"+name);//网络设备名

System.out.println("IP地址:"+ifconfig.getAddress());//IP地址

System.out.println("子网掩码:"+ifconfig.getNetmask());//子网掩码

if((ifconfig.getFlags()&1L)<=0L){

System.out.println("!IFF_UP...skippinggetNetInterfaceStat");

continue;

}

NetInterfaceStatifstat=sigar.getNetInterfaceStat(name);

System.out.println(name+"接收的总包裹数:"+ifstat.getRxPackets());//接收的总包裹数

System.out.println(name+"发送的总包裹数:"+ifstat.getTxPackets());//发送的总包裹数

System.out.println(name+"接收到的总字节数:"+ifstat.getRxBytes());//接收到的总字节数

System.out.println(name+"发送的总字节数:"+ifstat.getTxBytes());//发送的总字节数

System.out.println(name+"接收到的错误包数:"+ifstat.getRxErrors());//接收到的错误包数

System.out.println(name+"发送数据包时的错误数:"+ifstat.getTxErrors());//发送数据包时的错误数

System.out.println(name+"接收时丢弃的包数:"+ifstat.getRxDropped());//接收时丢弃的包数

System.out.println(name+"发送时丢弃的包数:"+ifstat.getTxDropped());//发送时丢弃的包数

}

}

privatestaticvoidethernet()throwsSigarException{

Sigarsigar=null;

sigar=newSigar();

String[]ifaces=sigar.getNetInterfaceList();

for(inti=0;i<ifaces.length;i++){

NetInterfaceConfigcfg=sigar.getNetInterfaceConfig(ifaces[i]);

if(NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress())||(cfg.getFlags()&NetFlags.IFF_LOOPBACK)!=0

||NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())){

continue;

}

System.out.println(cfg.getName()+"IP地址:"+cfg.getAddress());//IP地址

System.out.println(cfg.getName()+"网关广播地址:"+cfg.getBroadcast());//网关广播地址

System.out.println(cfg.getName()+"网卡MAC地址:"+cfg.getHwaddr());//网卡MAC地址

System.out.println(cfg.getName()+"子网掩码:"+cfg.getNetmask());//子网掩码

System.out.println(cfg.getName()+"网卡描述信息:"+cfg.getDescription());//网卡描述信息

System.out.println(cfg.getName()+"网卡类型"+cfg.getType());//

}

}

}

运行结果:

用户名:Administrator

计算机名:UCIT_JIF

计算机域名:UCIT_JIF

本地ip地址:192.168.2.153

本地主机名:UCIT_Jif

JVM可以使用的总内存:16252928

JVM可以使用的剩余内存:15866248

JVM可以使用的处理器个数:2

Java的运行环境版本:1.6.0_18

Java的运行环境供应商:Sun Microsystems Inc.

Java供应商的URL:/

Java的安装路径:C:\java\jre6

Java的虚拟机规范版本:1.0

Java的虚拟机规范供应商:Sun Microsystems Inc.

Java的虚拟机规范名称:Java Virtual Machine Specification

Java的虚拟机实现版本:16.0-b13

Java的虚拟机实现供应商:Sun Microsystems Inc.

Java的虚拟机实现名称:Java HotSpot(TM) Client VM

Java运行时环境规范版本:1.6

Java运行时环境规范供应商:null

Java运行时环境规范名称:Java Platform API Specification

Java的类格式版本号:50.0

Java的类路径:D:\eclipse3.6\eclipse\workspace\sigar\bin;D:\eclipse3.6\eclipse\workspace\sigar\lib\sigar.jar;D:\eclipse3.6\eclipse\workspace\sigar\lib\.sigar_shellrc;D:\eclipse3.6\eclipse\workspace\sigar\lib\sigar-x86-winnt.dll;D:\eclipse3.6\eclipse\workspace\sigar\lib\sigar-x86-winnt.lib;D:\eclipse3.6\eclipse\workspace\sigar\lib\libsigar-x86-linux.so

加载库时搜索的路径列表:C:\java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\PHP\;D:\oracle\product\10.2.0\client_2\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\java\jdk1.6.0_18\bin;C:\Program Files\TortoiseSVN\bin;C:\Progra~1\GnuWin32\bin;C:\Program Files\goodvpn\bin;D:\Program Files\PowerCmd;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Common Files\Adobe\AGL;C:\apache-ant-1.8.2\bin;D:\Program Files\Rational\common;C:\Program Files\StormII\Codec;C:\Program Files\StormII;C:\Program Files\SSH Communications Security\SSH Secure Shell;;;C:\Program Files\OpenVPN\bin;C:\Program Files\OpenVPN64\bin

默认的临时文件路径:C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\

一个或多个扩展目录的路径:C:\java\jre6\lib\ext;C:\WINDOWS\Sun\Java\lib\ext

操作系统的名称:Windows XP

操作系统的构架:x86

操作系统的版本:5.1

文件分隔符:\

路径分隔符:;

行分隔符:

用户的账户名称:Administrator

用户的主目录:C:\Documents and Settings\Administrator

用户的当前工作目录:D:\eclipse3.6\eclipse\workspace\sigar

----------------------------------

第1块CPU信息

CPU的总量MHz:3015

CPU生产商:AMD

CPU类别:Athlon

CPU缓存数量:-1

CPU用户使用率:3.1%

CPU系统使用率:9.3%

CPU当前等待率:0.0%

CPU当前错误率:0.0%

CPU当前空闲率:87.4%

CPU总的使用率:12.5%

第2块CPU信息

CPU的总量MHz:3015

CPU生产商:AMD

CPU类别:Athlon

CPU缓存数量:-1

CPU用户使用率:0.0%

CPU系统使用率:3.2%

CPU当前等待率:0.0%

CPU当前错误率:0.0%

CPU当前空闲率:96.8%

CPU总的使用率:3.2%

----------------------------------

内存总量:3275880K av

当前内存使用量:1698960K used

当前内存剩余量:1576920K free

交换区总量:5206208K av

当前交换区使用量:2062372K used

当前交换区剩余量:3143836K free

----------------------------------

操作系统:x86

操作系统CpuEndian():little

操作系统DataModel():32

操作系统的描述:Microsoft Windows XP

操作系统的卖主:Microsoft

操作系统的卖主名:Whistler

操作系统名称:Windows XP

操作系统卖主类型:XP

操作系统的版本号:5.1

----------------------------------

用户控制台:console

用户host:NT AUTHORITY

当前系统进程表中的用户名:LOCAL SERVICE

用户控制台:console

用户host:NT AUTHORITY

当前系统进程表中的用户名:NETWORK SERVICE

用户控制台:Console

用户host:UCIT_JIF

当前系统进程表中的用户名:Administrator

用户控制台:console

用户host:NT AUTHORITY

当前系统进程表中的用户名:SYSTEM

----------------------------------

分区的盘符名称0

盘符名称:C:\

盘符路径:C:\

盘符标志:0

盘符类型:FAT32

盘符类型名:local

盘符文件系统类型:2

C:\总大小:47159808KB

C:\剩余大小:9771792KB

C:\可用大小:9771792KB

C:\已经使用量:37388016KB

C:\资源的利用率:80.0%

C:\读出:45669

C:\写入:43176

分区的盘符名称1

盘符名称:D:\

盘符路径:D:\

盘符标志:0

盘符类型:NTFS

盘符类型名:local

盘符文件系统类型:2

D:\总大小:133186848KB

D:\剩余大小:65896436KB

D:\可用大小:65896436KB

D:\已经使用量:67290412KB

D:\资源的利用率:51.0%

D:\读出:41299

D:\写入:40369

分区的盘符名称2

盘符名称:E:\

盘符路径:E:\

盘符标志:0

盘符类型:NTFS

盘符类型名:local

盘符文件系统类型:2

E:\总大小:154151672KB

E:\剩余大小:82892352KB

E:\可用大小:82892352KB

E:\已经使用量:71259320KB

E:\资源的利用率:47.0%

E:\读出:21383

E:\写入:728

分区的盘符名称3

盘符名称:F:\

盘符路径:F:\

盘符标志:0

盘符类型:NTFS

盘符类型名:local

盘符文件系统类型:2

F:\总大小:153862504KB

F:\剩余大小:33843680KB

F:\可用大小:33843680KB

F:\已经使用量:120018824KB

F:\资源的利用率:79.0%

F:\读出:14

F:\写入:24

----------------------------------

网络设备名:eth0

IP地址:0.0.0.0

子网掩码:0.0.0.0

!IFF_UP...skipping getNetInterfaceStat

网络设备名:eth1

IP地址:0.0.0.0

子网掩码:0.0.0.0

!IFF_UP...skipping getNetInterfaceStat

网络设备名:eth2

IP地址:192.168.2.153

子网掩码:255.255.255.0

eth2接收的总包裹数:105678

eth2发送的总包裹数:21919

eth2接收到的总字节数:24269582

eth2发送的总字节数:8721544

eth2接收到的错误包数:0

eth2发送数据包时的错误数:0

eth2接收时丢弃的包数:0

eth2发送时丢弃的包数:0

网络设备名:eth3

IP地址:192.168.184.1

子网掩码:255.255.255.0

eth3接收的总包裹数:144

eth3发送的总包裹数:146

eth3接收到的总字节数:16861

eth3发送的总字节数:16969

eth3接收到的错误包数:0

eth3发送数据包时的错误数:0

eth3接收时丢弃的包数:0

eth3发送时丢弃的包数:0

网络设备名:eth4

IP地址:192.168.92.1

子网掩码:255.255.255.0

eth4接收的总包裹数:144

eth4发送的总包裹数:146

eth4接收到的总字节数:16861

eth4发送的总字节数:16969

eth4接收到的错误包数:0

eth4发送数据包时的错误数:0

eth4接收时丢弃的包数:0

eth4发送时丢弃的包数:0

网络设备名:lo0

IP地址:127.0.0.1

子网掩码:255.0.0.0

lo0接收的总包裹数:94004

lo0发送的总包裹数:94004

lo0接收到的总字节数:15416919

lo0发送的总字节数:15416919

lo0接收到的错误包数:0

lo0发送数据包时的错误数:0

lo0接收时丢弃的包数:0

lo0发送时丢弃的包数:0

----------------------------------

eth0IP地址:0.0.0.0

eth0网关广播地址:255.255.255.255

eth0网卡MAC地址:00:FF:79:6B:AF:45

eth0子网掩码:0.0.0.0

eth0网卡描述信息:TAP-Win32 Adapter V8 #3 - ????ü??????ò?

eth0网卡类型Ethernet

eth1IP地址:0.0.0.0

eth1网关广播地址:255.255.255.255

eth1网卡MAC地址:00:FF:C9:53:0A:58

eth1子网掩码:0.0.0.0

eth1网卡描述信息:TAP-Win32 Adapter V8 #2 - ????ü??????ò?

eth1网卡类型Ethernet

eth2IP地址:192.168.2.153

eth2网关广播地址:192.168.2.255

eth2网卡MAC地址:00:21:86:4D:23:26

eth2子网掩码:255.255.255.0

eth2网卡描述信息:NVIDIA nForce Networking Controller - ????ü??????ò?

eth2网卡类型Ethernet

eth3IP地址:192.168.184.1

eth3网关广播地址:192.168.184.255

eth3网卡MAC地址:00:50:56:C0:00:01

eth3子网掩码:255.255.255.0

eth3网卡描述信息:VMware Virtual Ethernet Adapter for VMnet1

eth3网卡类型Ethernet

eth4IP地址:192.168.92.1

eth4网关广播地址:192.168.92.255

eth4网卡MAC地址:00:50:56:C0:00:08

eth4子网掩码:255.255.255.0

eth4网卡描述信息:VMware Virtual Ethernet Adapter for VMnet8

eth4网卡类型Ethernet

参考:/jifeng/archive//05/16/2503519.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。