通过使用第三方开源jar包sigar.jar我们可以获得本地的信息
1.下载sigar.jar
2.按照主页上的说明解压包后将相应的文件copy到java路径。比如windows32位操作系统需要将lib中sigar-x86-winnt.dll文件拷贝到java SDK目录的bin内
参考官方主页上的配置项。
File | Language | Description | Required |
---|---|---|---|
sigar.jar | Java | Java API | Yes (for Java only) |
log4j.jar | Java | Java logging API | No |
libsigar-x86-linux.so | C | Linux AMD/Intel 32-bit | * |
libsigar-amd64-linux.so | C | Linux AMD/Intel 64-bit | * |
libsigar-ppc-linux.so | C | Linux PowerPC 32-bit | * |
libsigar-ppc64-linux.so | C | Linux PowerPC 64-bit | * |
libsigar-ia64-linux.so | C | Linux Itanium 64-bit | * |
libsigar-s390x-linux.so | C | Linux zSeries 64-bit | * |
sigar-x86-winnt.dll | C | Windows AMD/Intel 32-bit | * |
sigar-amd64-winnt.dll | C | Windows AMD/Intel 64-bit | * |
libsigar-ppc-aix-5.so | C | AIX PowerPC 32-bit | * |
libsigar-ppc64-aix-5.so | C | AIX PowerPC 64-bit | * |
libsigar-pa-hpux-11.sl | C | HP-UX PA-RISC 32-bit | * |
libsigar-ia64-hpux-11.sl | C | HP-UX Itanium 64-bt | * |
libsigar-sparc-solaris.so | C | Solaris Sparc 32-bit | * |
libsigar-sparc64-solaris.so | C | Solaris Sparc 64-bit | * |
libsigar-x86-solaris.so | C | Solaris AMD/Intel 32-bit | * |
libsigar-amd64-solaris.so | C | Solaris AMD/Intel 64-bit | * |
libsigar-universal-macosx.dylib | C | Mac OS X PowerPC/Intel 32-bit | * |
libsigar-universal64-macosx.dylib | C | Mac OS X PowerPC/Intel 64-bit | * |
libsigar-x86-freebsd-5.so | C | FreeBSD 5.x AMD/Intel 32-bit | * |
libsigar-x86-freebsd-6.so | C | FreeBSD 6.x AMD/Intel 64-bit | * |
libsigar-amd64-freebsd-6.so | C | FreeBSD 6.x AMD/Intel 64-bit | * |
3.
代码实现
- package com.xingcloud.test;
- import java.net.InetAddress;
- import java.net.UnknownHostException;
- import java.util.Map;
- import java.util.Properties;
- import org.hyperic.sigar.CpuInfo;
- import org.hyperic.sigar.CpuPerc;
- import org.hyperic.sigar.FileSystem;
- import org.hyperic.sigar.FileSystemUsage;
- import org.hyperic.sigar.Mem;
- import org.hyperic.sigar.NetFlags;
- import org.hyperic.sigar.NetInterfaceConfig;
- import org.hyperic.sigar.NetInterfaceStat;
- import org.hyperic.sigar.OperatingSystem;
- import org.hyperic.sigar.Sigar;
- import org.hyperic.sigar.SigarException;
- import org.hyperic.sigar.Swap;
- import org.hyperic.sigar.Who;
- public class RuntimeTest {
- public static void main(String[] args) {
- try {
- // System信息,从jvm获取
- property();
- // cpu信息
- cpu();
- // 内存信息
- memory();
- // 操作系统信息
- os();
- // 用户信息
- who();
- // 文件系统信息
- file();
- // 网络信息
- net();
- // 以太网信息
- ethernet();
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- }
- private staticvoid property() throws UnknownHostException {
- Runtime r = Runtime.getRuntime();
- Properties props = System.getProperties();
- InetAddress addr;
- addr = InetAddress.getLocalHost();
- String ip = addr.getHostAddress();
- Map<String, String> map = System.getenv();
- String userName = map.get("USERNAME");// 获取用户名
- String computerName = map.get("COMPUTERNAME");// 获取计算机名
- String userDomain = 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"));
- }
- private static void memory() throws SigarException {
- Sigar sigar = new Sigar();
- Mem mem = sigar.getMem();
- // 内存总量
- System.out.println("内存总量: " + mem.getTotal() / 1024L +"K av");
- // 当前内存使用量
- System.out.println("当前内存使用量: " + mem.getUsed() / 1024L +"K used");
- // 当前内存剩余量
- System.out.println("当前内存剩余量: " + mem.getFree() / 1024L +"K free");
- Swap swap = sigar.getSwap();
- // 交换区总量
- System.out.println("交换区总量: " + swap.getTotal() / 1024L +"K av");
- // 当前交换区使用量
- System.out.println("当前交换区使用量: " + swap.getUsed() / 1024L +"K used");
- // 当前交换区剩余量
- System.out.println("当前交换区剩余量: " + swap.getFree() / 1024L +"K free");
- }
- private static void cpu() throws SigarException {
- Sigar sigar = new Sigar();
- CpuInfo infos[] = sigar.getCpuInfoList();
- CpuPerc cpuList[] = null;
- cpuList = sigar.getCpuPercList();
- for (int i =0; i < infos.length; i++) {// 不管是单块CPU还是多CPU都适用
- CpuInfo info = 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]);
- }
- }
- private static void printCpuPerc(CpuPerc cpu) {
- 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()));// 总的使用率
- }
- private staticvoid os() {
- OperatingSystem OS = 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());
- }
- private static void who() throws SigarException {
- Sigar sigar = new Sigar();
- Who who[] = sigar.getWhoList();
- if (who != null && who.length >0) {
- for (int i = 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());
- }
- }
- }
- private static void file() throws Exception {
- Sigar sigar = new Sigar();
- FileSystem fslist[] = sigar.getFileSystemList();
- for (int i =0; i < fslist.length; i++) {
- System.out.println("分区的盘符名称" + i);
- FileSystem fs = 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());
- FileSystemUsage usage = null;
- usage = sigar.getFileSystemUsage(fs.getDirName());
- switch (fs.getType()) {
- case 0: // TYPE_UNKNOWN :未知
- break;
- case 1: // TYPE_NONE
- break;
- case 2: // 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");
- double usePercent = usage.getUsePercent() * 100D;
- // 文件系统资源的利用率
- System.out.println(fs.getDevName() + "资源的利用率: " + usePercent +"%");
- break;
- case 3:// TYPE_NETWORK :网络
- break;
- case 4:// TYPE_RAM_DISK :闪存
- break;
- case 5:// TYPE_CDROM :光驱
- break;
- case 6:// TYPE_SWAP :页面交换
- break;
- }
- System.out.println(fs.getDevName() + "读出: " + usage.getDiskReads());
- System.out.println(fs.getDevName() + "写入: " + usage.getDiskWrites());
- }
- return;
- }
- private static void net() throws Exception {
- Sigar sigar = new Sigar();
- String ifNames[] = sigar.getNetInterfaceList();
- for (int i =0; i < ifNames.length; i++) {
- String name = ifNames[i];
- NetInterfaceConfig ifconfig = 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...skipping getNetInterfaceStat");
- continue;
- }
- NetInterfaceStat ifstat = 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());// 发送时丢弃的包数
- }
- }
- private staticvoid ethernet() throws SigarException {
- Sigar sigar = null;
- sigar = new Sigar();
- String[] ifaces = sigar.getNetInterfaceList();
- for (int i =0; i < ifaces.length; i++) {
- NetInterfaceConfig cfg = 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());//
- }
- }
- }
package com.xingcloud.test;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Map;
import java.util.Properties;
import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.NetFlags;
import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.NetInterfaceStat;
import org.hyperic.sigar.OperatingSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.Swap;
import org.hyperic.sigar.Who;
public class RuntimeTest {
public static void main(String[] args) {
try {
// System信息,从jvm获取
property();
// cpu信息
cpu();
// 内存信息
memory();
// 操作系统信息
os();
// 用户信息
who();
// 文件系统信息
file();
// 网络信息
net();
// 以太网信息
ethernet();
} catch (Exception e1) {
e1.printStackTrace();
}
}
private static void property() throws UnknownHostException {
Runtime r = Runtime.getRuntime();
Properties props = System.getProperties();
InetAddress addr;
addr = InetAddress.getLocalHost();
String ip = addr.getHostAddress();
Map<String, String> map = System.getenv();
String userName = map.get("USERNAME");// 获取用户名
String computerName = map.get("COMPUTERNAME");// 获取计算机名
String userDomain = 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"));
}
private static void memory() throws SigarException {
Sigar sigar = new Sigar();
Mem mem = sigar.getMem();
// 内存总量
System.out.println("内存总量: " + mem.getTotal() / 1024L + "K av");
// 当前内存使用量
System.out.println("当前内存使用量: " + mem.getUsed() / 1024L + "K used");
// 当前内存剩余量
System.out.println("当前内存剩余量: " + mem.getFree() / 1024L + "K free");
Swap swap = sigar.getSwap();
// 交换区总量
System.out.println("交换区总量: " + swap.getTotal() / 1024L + "K av");
// 当前交换区使用量
System.out.println("当前交换区使用量: " + swap.getUsed() / 1024L + "K used");
// 当前交换区剩余量
System.out.println("当前交换区剩余量: " + swap.getFree() / 1024L + "K free");
}
private static void cpu() throws SigarException {
Sigar sigar = new Sigar();
CpuInfo infos[] = sigar.getCpuInfoList();
CpuPerc cpuList[] = null;
cpuList = sigar.getCpuPercList();
for (int i = 0; i < infos.length; i++) {// 不管是单块CPU还是多CPU都适用
CpuInfo info = 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]);
}
}
private static void printCpuPerc(CpuPerc cpu) {
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()));// 总的使用率
}
private static void os() {
OperatingSystem OS = 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());
}
private static void who() throws SigarException {
Sigar sigar = new Sigar();
Who who[] = sigar.getWhoList();
if (who != null && who.length > 0) {
for (int i = 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());
}
}
}
private static void file() throws Exception {
Sigar sigar = new Sigar();
FileSystem fslist[] = sigar.getFileSystemList();
for (int i = 0; i < fslist.length; i++) {
System.out.println("分区的盘符名称" + i);
FileSystem fs = 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());
FileSystemUsage usage = null;
usage = sigar.getFileSystemUsage(fs.getDirName());
switch (fs.getType()) {
case 0: // TYPE_UNKNOWN :未知
break;
case 1: // TYPE_NONE
break;
case 2: // 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");
double usePercent = usage.getUsePercent() * 100D;
// 文件系统资源的利用率
System.out.println(fs.getDevName() + "资源的利用率: " + usePercent + "%");
break;
case 3:// TYPE_NETWORK :网络
break;
case 4:// TYPE_RAM_DISK :闪存
break;
case 5:// TYPE_CDROM :光驱
break;
case 6:// TYPE_SWAP :页面交换
break;
}
System.out.println(fs.getDevName() + "读出: " + usage.getDiskReads());
System.out.println(fs.getDevName() + "写入: " + usage.getDiskWrites());
}
return;
}
private static void net() throws Exception {
Sigar sigar = new Sigar();
String ifNames[] = sigar.getNetInterfaceList();
for (int i = 0; i < ifNames.length; i++) {
String name = ifNames[i];
NetInterfaceConfig ifconfig = 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...skipping getNetInterfaceStat");
continue;
}
NetInterfaceStat ifstat = 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());// 发送时丢弃的包数
}
}
private static void ethernet() throws SigarException {
Sigar sigar = null;
sigar = new Sigar();
String[] ifaces = sigar.getNetInterfaceList();
for (int i = 0; i < ifaces.length; i++) {
NetInterfaceConfig cfg = 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());//
}
}
}
运行后的结果为:
- 用户名: xxx
- 计算机名: XXX-PC
- 计算机域名: XXX-PC
- 本地ip地址: 10.18.0.0
- 本地主机名: xxx-PC
- JVM可以使用的总内存: 16252928
- JVM可以使用的剩余内存: 15822304
- JVM可以使用的处理器个数: 2
- Java的运行环境版本: 1.6.0_25
- Java的运行环境供应商: Sun Microsystems Inc.
- Java供应商的URL: http://java.sun.com/
- Java的安装路径: D:\Program Files\Java\jdk1.6.0_25\jre
- Java的虚拟机规范版本: 1.0
- Java的虚拟机规范供应商: Sun Microsystems Inc.
- Java的虚拟机规范名称: Java Virtual Machine Specification
- Java的虚拟机实现版本: 20.0-b11
- 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:\workspace\test\bin;D:\develop\hyperic-sigar-1.6.4\hyperic-sigar-1.6.4\sigar-bin\lib\sigar.jar;D:\develop\hyperic-sigar-1.6.4\hyperic-sigar-1.6.4\sigar-bin\lib\log4j.jar
- 加载库时搜索的路径列表: D:\Program Files\Java\jdk1.6.0_25\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:/Program Files/Java/jdk1.6.0_25/bin/../jre/bin/client;D:/Program Files/Java/jdk1.6.0_25/bin/../jre/bin;D:/Program Files/Java/jdk1.6.0_25/bin/../jre/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\Program Files\TortoiseSVN\bin;D:\Program Files\SlikSvn\bin;D:\Program Files\Java\jdk1.6.0_25\bin;D:\Program Files\Java\jdk1.6.0_25\jre\bin;D:\drivers\apache-ant-1.8.2-bin\apache-ant-1.8.2\bin;D:\Program Files\Vim\vim73;D:\drivers\groovypp-0.4.296_1.8.0\bin;D:\develop\php-5.3.8-nts-Win32-VC9-x86;D:\develop\php-5.3.8-nts-Win32-VC9-x86\ext;D:\develop\eclipse;
- 默认的临时文件路径: C:\Users\xxx\AppData\Local\Temp\
- 一个或多个扩展目录的路径: D:\Program Files\Java\jdk1.6.0_25\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
- 操作系统的名称: Windows 7
- 操作系统的构架: x86
- 操作系统的版本: 6.1
- 文件分隔符: \
- 路径分隔符: ;
- 行分隔符:
- 用户的账户名称: xxx
- 用户的主目录: C:\Users\xxx
- 用户的当前工作目录: D:\workspace\test
- 处理器个数: 2
- 第1块CPU信息
- CPU的总量MHz: 3192
- CPU生产商: Intel
- CPU类别: Pentium(R) Dual-Core CPU E5800 @ 3.20GHz
- CPU缓存数量: -1
- CPU用户使用率: 3.2%
- CPU系统使用率: 3.0%
- CPU当前等待率: 0.0%
- CPU当前错误率: 0.0%
- CPU当前空闲率: 93.7%
- CPU总的使用率: 6.2%
- 第2块CPU信息
- CPU的总量MHz: 3192
- CPU生产商: Intel
- CPU类别: Pentium(R) Dual-Core CPU E5800 @ 3.20GHz
- CPU缓存数量: -1
- CPU用户使用率: 3.2%
- CPU系统使用率: 0.0%
- CPU当前等待率: 0.0%
- CPU当前错误率: 0.0%
- CPU当前空闲率: 96.7%
- CPU总的使用率: 3.2%
- 内存总量: 3370648K av
- 当前内存使用量: 2321416K used
- 当前内存剩余量: 1049232K free
- 交换区总量: 6739532K av
- 当前交换区使用量: 3028744K used
- 当前交换区剩余量: 3710788K free
- 操作系统: x86
- 操作系统CpuEndian(): little
- 操作系统DataModel(): 32
- 操作系统的描述: Microsoft Windows 7
- 操作系统的卖主: Microsoft
- 操作系统的卖主名: Vienna
- 操作系统名称: Windows 7
- 操作系统卖主类型: 7
- 操作系统的版本号: 6.1
- 用户控制台: console
- 用户host: NT AUTHORITY
- 当前系统进程表中的用户名: LOCAL SERVICE
- 用户控制台: console
- 用户host: NT AUTHORITY
- 当前系统进程表中的用户名: NETWORK SERVICE
- 用户控制台: console
- 用户host: xxx-PC
- 当前系统进程表中的用户名: xxx
- 用户控制台: console
- 用户host: NT AUTHORITY
- 当前系统进程表中的用户名: SYSTEM
- 分区的盘符名称0
- 盘符名称: C:\
- 盘符路径: C:\
- 盘符标志: 0
- 盘符类型: NTFS
- 盘符类型名: local
- 盘符文件系统类型: 2
- C:\总大小: 51097596KB
- C:\剩余大小: 24763180KB
- C:\可用大小: 24763180KB
- C:\已经使用量: 26334416KB
- C:\资源的利用率: 52.0%
- C:\读出: 557151
- C:\写入: 363101
- 分区的盘符名称1
- 盘符名称: D:\
- 盘符路径: D:\
- 盘符标志: 0
- 盘符类型: NTFS
- 盘符类型名: local
- 盘符文件系统类型: 2
- D:\总大小: 204799996KB
- D:\剩余大小: 187817064KB
- D:\可用大小: 187817064KB
- D:\已经使用量: 16982932KB
- D:\资源的利用率: 9.0%
- D:\读出: 986420
- D:\写入: 27493
- 分区的盘符名称2
- 盘符名称: E:\
- 盘符路径: E:\
- 盘符标志: 0
- 盘符类型: NTFS
- 盘符类型名: local
- 盘符文件系统类型: 2
- E:\总大小: 232384508KB
- E:\剩余大小: 222097004KB
- E:\可用大小: 222097004KB
- E:\已经使用量: 10287504KB
- E:\资源的利用率: 5.0%
- E:\读出: 178492
- E:\写入: 20
- 分区的盘符名称3
- 盘符名称: F:\
- 盘符路径: F:\
- 盘符标志: 0
- 盘符类型: cdrom
- 盘符类型名: cdrom
- 盘符文件系统类型: 5
- 分区的盘符名称4
- 盘符名称: I:\
- 盘符路径: I:\
- 盘符标志: 0
- 盘符类型: cdrom
- 盘符类型名: cdrom
- 盘符文件系统类型: 5
- 分区的盘符名称5
- 盘符名称: Z:\
- 盘符路径: Z:\
- 盘符标志: 0
- 盘符类型: NTFS
- 盘符类型名: local
- 盘符文件系统类型: 2
- Z:\总大小: 102396KB
- Z:\剩余大小: 63108KB
- Z:\可用大小: 63108KB
- Z:\已经使用量: 39288KB
- Z:\资源的利用率: 39.0%
- Z:\读出: 127
- Z:\写入: 138
- 网络设备名: eth0
- IP地址: 0.0.0.0
- 子网掩码: 0.0.0.0
- eth0接收的总包裹数:0
- eth0发送的总包裹数:0
- eth0接收到的总字节数:0
- eth0发送的总字节数:0
- eth0接收到的错误包数:0
- eth0发送数据包时的错误数:0
- eth0接收时丢弃的包数:0
- eth0发送时丢弃的包数:0
- 网络设备名: eth1
- IP地址: 0.0.0.0
- 子网掩码: 0.0.0.0
- eth1接收的总包裹数:0
- eth1发送的总包裹数:0
- eth1接收到的总字节数:0
- eth1发送的总字节数:0
- eth1接收到的错误包数:0
- eth1发送数据包时的错误数:0
- eth1接收时丢弃的包数:0
- eth1发送时丢弃的包数:0
- 网络设备名: eth2
- IP地址: 0.0.0.0
- 子网掩码: 0.0.0.0
- eth2接收的总包裹数:436091
- eth2发送的总包裹数:217558
- eth2接收到的总字节数:256792219
- eth2发送的总字节数:46258030
- eth2接收到的错误包数:0
- eth2发送数据包时的错误数:0
- eth2接收时丢弃的包数:0
- eth2发送时丢弃的包数:0
- 网络设备名: eth3
- IP地址: 0.0.0.0
- 子网掩码: 0.0.0.0
- eth3接收的总包裹数:436091
- eth3发送的总包裹数:217558
- eth3接收到的总字节数:256792219
- eth3发送的总字节数:46258030
- eth3接收到的错误包数:0
- eth3发送数据包时的错误数:0
- eth3接收时丢弃的包数:0
- eth3发送时丢弃的包数:0
- 网络设备名: eth4
- IP地址: 0.0.0.0
- 子网掩码: 0.0.0.0
- eth4接收的总包裹数:0
- eth4发送的总包裹数:0
- eth4接收到的总字节数:0
- eth4发送的总字节数:0
- eth4接收到的错误包数:0
- eth4发送数据包时的错误数:0
- eth4接收时丢弃的包数:0
- eth4发送时丢弃的包数:0
- 网络设备名: eth5
- IP地址: 0.0.0.0
- 子网掩码: 0.0.0.0
- eth5接收的总包裹数:0
- eth5发送的总包裹数:0
- eth5接收到的总字节数:0
- eth5发送的总字节数:0
- eth5接收到的错误包数:0
- eth5发送数据包时的错误数:0
- eth5接收时丢弃的包数:0
- eth5发送时丢弃的包数:0
- 网络设备名: eth6
- IP地址: 10.18.102.215
- 子网掩码: 255.255.255.0
- eth6接收的总包裹数:436091
- eth6发送的总包裹数:217558
- eth6接收到的总字节数:256792219
- eth6发送的总字节数:46258030
- eth6接收到的错误包数:0
- eth6发送数据包时的错误数:0
- eth6接收时丢弃的包数:0
- eth6发送时丢弃的包数:0
- 网络设备名: eth7
- IP地址: 0.0.0.0
- 子网掩码: 0.0.0.0
- eth7接收的总包裹数:0
- eth7发送的总包裹数:0
- eth7接收到的总字节数:0
- eth7发送的总字节数:0
- eth7接收到的错误包数:0
- eth7发送数据包时的错误数:0
- eth7接收时丢弃的包数:0
- eth7发送时丢弃的包数:0
- 网络设备名: eth8
- IP地址: 0.0.0.0
- 子网掩码: 0.0.0.0
- eth8接收的总包裹数:0
- eth8发送的总包裹数:0
- eth8接收到的总字节数:0
- eth8发送的总字节数:0
- eth8接收到的错误包数:0
- eth8发送数据包时的错误数:0
- eth8接收时丢弃的包数:0
- eth8发送时丢弃的包数:0
- 网络设备名: lo0
- IP地址: 127.0.0.1
- 子网掩码: 255.0.0.0
- lo0接收的总包裹数:0
- lo0发送的总包裹数:0
- lo0接收到的总字节数:0
- lo0发送的总字节数:0
- lo0接收到的错误包数:0
- lo0发送数据包时的错误数:0
- lo0接收时丢弃的包数:0
- lo0发送时丢弃的包数:0
- eth0IP地址:0.0.0.0
- eth0网关广播地址:0.0.0.0
- eth0网卡MAC地址:7C:E2:20:52:41:53
- eth0子网掩码:0.0.0.0
- eth0网卡描述信息:WAN Miniport (IPv6)
- eth0网卡类型Ethernet
- eth1IP地址:0.0.0.0
- eth1网关广播地址:0.0.0.0
- eth1网卡MAC地址:7A:7C:20:52:41:53
- eth1子网掩码:0.0.0.0
- eth1网卡描述信息:WAN Miniport (Network Monitor)
- eth1网卡类型Ethernet
- eth2IP地址:0.0.0.0
- eth2网关广播地址:0.0.0.0
- eth2网卡MAC地址:14:FE:B5:E9:63:CA
- eth2子网掩码:0.0.0.0
- eth2网卡描述信息:Broadcom NetLink (TM) Gigabit Ethernet-QoS Packet Scheduler-0000
- eth2网卡类型Ethernet
- eth3IP地址:0.0.0.0
- eth3网关广播地址:0.0.0.0
- eth3网卡MAC地址:14:FE:B5:E9:63:CA
- eth3子网掩码:0.0.0.0
- eth3网卡描述信息:Broadcom NetLink (TM) Gigabit Ethernet-WFP LightWeight Filter-0000
- eth3网卡类型Ethernet
- eth4IP地址:0.0.0.0
- eth4网关广播地址:0.0.0.0
- eth4网卡MAC地址:7A:7C:20:52:41:53
- eth4子网掩码:0.0.0.0
- eth4网卡描述信息:WAN Miniport (IP)
- eth4网卡类型Ethernet
- eth5IP地址:0.0.0.0
- eth5网关广播地址:0.0.0.0
- eth5网卡MAC地址:7A:7C:20:52:41:53
- eth5子网掩码:0.0.0.0
- eth5网卡描述信息:WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000
- eth5网卡类型Ethernet
- eth6IP地址:10.18.102.0
- eth6网关广播地址:10.18.102.255
- eth6网卡MAC地址:14:FE:B5:E9:63:CA
- eth6子网掩码:255.255.255.0
- eth6网卡描述信息:Broadcom NetLink (TM) Gigabit Ethernet
- eth6网卡类型Ethernet
- eth7IP地址:0.0.0.0
- eth7网关广播地址:0.0.0.0
- eth7网卡MAC地址:7A:7C:20:52:41:53
- eth7子网掩码:0.0.0.0
- eth7网卡描述信息:WAN Miniport (IP)-QoS Packet Scheduler-0000
- eth7网卡类型Ethernet
- eth8IP地址:0.0.0.0
- eth8网关广播地址:0.0.0.0
- eth8网卡MAC地址:7C:E2:20:52:41:53
- eth8子网掩码:0.0.0.0
- eth8网卡描述信息:WAN Miniport (IPv6)-QoS Packet Scheduler-0000