Sigar的全名是System Information Gatherer And Reporter,中文名是系统信息收集和报表工具。可以收集的信息包括:
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这个单词,您可能要问sugar(糖),音标是:[ˈʃʊgə(r)] 。
如有什么疑问可追问,望采纳!
祝楼主学习进步!
英语牛人团为你解答!
全称是System Information Gatherer And Reporter,中文名是系统信息收集和报表工具。
使用sigar来监控,简单方便!
使用说明:以下代码需要配合sigar的dll文件来用,需要将dll文件放到JDK下的bin文件夹下,供sigar程序调用,还需要sigar jar包。以下程序经过测试,完全可用!
有关jar包跟dll文件 我上传不了,私信我,我发你。
import java.net.InetAddress;。
import java.net.UnknownHostException;。
import java.util.Map;。
import java.util.Properties;。
import java.util.Timer;。
import java.util.TimerTask;。
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 {
Timer timer = new Timer();//定时器。
TimerTask task = new TimerTask(){。
public void run() {。
try {。
memory();。
} catch (SigarException e) {。
e.printStackTrace();。
}。
}。
};
try{。
timer.schedule(task, 0, 3000);//每3秒取一次。
}catch(Exception ex){。
ex.printStackTrace();。
}
// System信息,从jvm获取。
// property();//根据自己的需求,都可以放到定时器中定时获取。
// cpu信息。
//cpu();。
// 内存信息。
// memory();。
// 操作系统信息。
// os();。
// 用户信息。
// who();。
} 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();。
float total = mem.getTotal();。
float used = mem.getUsed();。
// 内存总量。
System.out.println("内存总量: " + mem.getTotal() / 1024L/1024L + "M av");。
// 当前内存使用量。
System.out.println("当前内存使用量: " + mem.getUsed() / 1024L/1024L + "M used");。
// 当前内存剩余量。
System.out.println("当前内存剩余量: " + mem.getFree() / 1024L/1024L + "M free");。
// 当前内存使用率。
System.out.println("内存使用率: " +used/total*100+"%");。
Swap swap = sigar.getSwap();。
// 交换区总量。
System.out.println("交换区总量: " + swap.getTotal() / 1024L/1024L + "M av");。
// 当前交换区使用量。
System.out.println("当前交换区使用量: " + swap.getUsed() / 1024L/1024L + "M used");。
// 当前交换区剩余量。
System.out.println("当前交换区剩余量: " + swap.getFree() / 1024L/1024L + "M 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());。
}
}
}
<dependency>。
<groupId>org.hyperic</groupId>。
<artifactId>sigar</artifactId>。
<version>1.6.5.132</version>。
</dependency>。
加到你的pom.xml文件中。