设为首页 加入收藏

TOP

Java中获取系统相关信息——sigar(一)
2015-02-04 13:53:04 来源: 作者: 【 】 浏览:104
Tags:Java 获取 系统 相关 信息 sigar

一、sigar简介


sigar中文名是系统信息收集和报表工具,是一个开源的工具,提供了跨平台的系统信息收集的API,可以和绝大多数操作系统和大多数版本打交道,可以收集的信息包括:
1.操作系统的信息,包括:dataModel、cpuEndian、name、version、arch、machine、description、patchLevel、vendor、vendorVersion、vendorName、vendorCodeName
2.CPU信息,包括:基本信息(vendor、model、mhz、cacheSize)和统计信息(user、sys、idle、nice、wait)
3.内存信息,物理内存和交换内存的总数、使用数、剩余数;RAM的大小
4.进程信息,包括每个进程的内存、CPU占用数、状态、参数、句柄等。
5.文件系统信息,包括名称、容量、剩余数、使用数、分区类型等
6.网络接口信息,包括基本信息和统计信息。
7.网络路由和链接表信息。


二、sigar的使用


//接口定义


public interface LoadInfo {
? ? //获取cpu使用率
? ? public String getCpuInfo();?
? ? // 获取系统内存使用量
? ? public String getRamInfo();
? ? //获取网络使用流量
? ? public String getNetworkInfo();
? ? //获取操作系统信息
? ? public String getSystemInfo();
? ? // 获取运行环境信息
? ? public String getRunLoadInfo();
? ? //获取虚拟机剩余内存
? ? public String getVmRamInfo();
}


//以下是接口的实现


获取cpu信息代码
// CPU数量(单位:个)?
int cpuLength = sigar.getCpuInfoList().length;?
print(cpuLength);?
?
// CPU的总量(单位:HZ)及CPU的相关信息?
CpuInfo infos[] = sigar.getCpuInfoList();?
for (int i = 0; i < infos.length; i++) {// 不管是单块CPU还是多CPU都适用?
? ? CpuInfo info = infos[i];?
? ? print("mhz=" + info.getMhz());// CPU的总量MHz?
? ? print("vendor=" + info.getVendor());// 获得CPU的卖主,如:Intel?
? ? print("model=" + info.getModel());// 获得CPU的类别,如:Celeron?
? ? print("cache size=" + info.getCacheSize());// 缓冲存储器数量?
}?
?
?
// 方式一,主要是针对一块CPU的情况?
CpuPerc cpu;?
try {?
? ? cpu = sigar.getCpuPerc();?
? ? printCpuPerc(cpu);?
} catch (SigarException e) {?
? ? e.printStackTrace();?
}?
?
// 方式二,不管是单块CPU还是多CPU都适用?
CpuPerc cpuList[] = null;?
try {?
? ? cpuList = sigar.getCpuPercList();?
} catch (SigarException e) {?
? ? e.printStackTrace();?
}?
for (int i = 0; i < cpuList.length; i++) {?
? ? // printCpuPerc(cpuList[i]);?
}?


获取内存信息代码?
// 物理内存信息?
Mem mem = sigar.getMem();?
// 内存总量?
print("Total = " + mem.getTotal() / 1024L / 1024 + "M av");?
// 当前内存使用量?
print("Used = " + mem.getUsed() / 1024L / 1024 + "M used");?
// 当前内存剩余量?
print("Free = " + mem.getFree() / 1024L / 1024 + "M free");?
?
// 系统页面文件交换区信息?
Swap swap = sigar.getSwap();?
// 交换区总量?
print("Total = " + swap.getTotal() / 1024L + "K av");?
// 当前交换区使用量?
print("Used = " + swap.getUsed() / 1024L + "K used");?
// 当前交换区剩余量?
print("Free = " + swap.getFree() / 1024L + "K free");?


获取操作系统信息代码?


// 取到当前操作系统的名称?
String hostname = "";?
try {?
? ? hostname = InetAddress.getLocalHost().getHostName();?
} catch (Exception exc) {?
? ? try {?
? ? ? ? hostname = sigar.getNetInfo().getHostName();?
? ? } catch (SigarException e) {?
? ? ? ? hostname = "localhost.unknown";?
? ? } finally {?
? ? ? ? sigar.close();?
? ? }?
}?
print(hostname);?
?
// 取当前操作系统的信息?
OperatingSystem OS = OperatingSystem.getInstance();?
// 操作系统内核类型如: 386、486、586等x86?
print("OS.getArch() = " + OS.getArch());?
print("OS.getCpuEndian() = " + OS.getCpuEndian());//?
print("OS.getDataModel() = " + OS.getDataModel());//?
// 系统描述?
print("OS.getDescription() = " + OS.getDescription());?
print("OS.getMachine() = " + OS.getMachine());//?
// 操作系统类型?
print("OS.getName() = " + OS.getName());?
print("OS.getPatchLevel() = " + OS.getPatchLevel());//?
// 操作系统的卖主?
print("OS.getVendor() = " + OS.getVendor());?
// 卖主名称?
System.out?
? ? ? ? .println("OS.getVendorCodeName() = " + OS.getVendorCodeName());?
// 操作系统名称?
print("OS.getVendorName() = " + OS.getVendorName());?
// 操作系统卖主类型?
print("OS.getVendorVersion() = " + OS.getVendorVersion());?
// 操作系统的版本号?
print("OS.getVersion() = " + OS.getVersion());?
?
// 取当前系统进程表中的用户信息?
Who who[] = sigar.getWhoList();?
if (who != null && who.length > 0) {?
? ? for (int i = 0; i < who.length; i++) {?
? ? ? ? print("\n~~~~~~~~~" + Stri

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇IntelliJ IDEA读取资源文件 下一篇Linux C编程学习:如何锁定内存

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: