Sigar linux系统中 java编程简单实用例子
2016-10-25 17:00
253 查看
1.下载Sigar (主要是要获取sigar.jar 和so文件)
wget http://downloads.sourceforge.net/project/sigar/sigar/1.6/hyperic-sigar-1.6.4-src.tar.gz
wget http://downloads.sourceforge.net/project/sigar/sigar/1.6/hyperic-sigar-1.6.4-src.tar.gz
tar zxf hyperic-sigar-1.6.4-src.tar.gz
cd hyperic-sigar-1.6.4-src
cd src
cd bindings
cd java
ant (没有ant时候,先安装ant)
2.拷贝出需要的jar包(sigar.jar)和so文件(libsigar-amd64-linux.so,libsigar-x86-linux.so)
so文件在bindings/Java/sigar-bin/lib中,把libsigar-amd64-linux.so文件放入/usr/lib64/中,需要sudo chmod 744 或 chmod 777 -R 修改libsigar-amd64-linux.so文件权限。(根据自己电脑是32/64位选择)
将jar包导入java工程,这个jar包也在bindings/Java/sigar-bin/lib中。
也可以maven导入:
gradle导入:
3.在java项目中创建工具类(类中用的import有的你可能没有,自己下载或是找其他替换就好)
只获取cpu和内存信息,其他类似,可以自己扩展。
运行结果:(json格式,可自己修改)
wget http://downloads.sourceforge.net/project/sigar/sigar/1.6/hyperic-sigar-1.6.4-src.tar.gz
wget http://downloads.sourceforge.net/project/sigar/sigar/1.6/hyperic-sigar-1.6.4-src.tar.gz
tar zxf hyperic-sigar-1.6.4-src.tar.gz
cd hyperic-sigar-1.6.4-src
cd src
cd bindings
cd java
ant (没有ant时候,先安装ant)
2.拷贝出需要的jar包(sigar.jar)和so文件(libsigar-amd64-linux.so,libsigar-x86-linux.so)
so文件在bindings/Java/sigar-bin/lib中,把libsigar-amd64-linux.so文件放入/usr/lib64/中,需要sudo chmod 744 或 chmod 777 -R 修改libsigar-amd64-linux.so文件权限。(根据自己电脑是32/64位选择)
将jar包导入java工程,这个jar包也在bindings/Java/sigar-bin/lib中。
也可以maven导入:
<!-- https://mvnrepository.com/artifact/org.fusesource/sigar --> <dependency> <groupId>org.fusesource</groupId> <artifactId>sigar</artifactId> <version>1.6.4</version> </dependency>
gradle导入:
//https://mvnrepository.com/artifact/org.fusesource/sigar compile group: 'org.fusesource', name: 'sigar', version: '1.6.4'
3.在java项目中创建工具类(类中用的import有的你可能没有,自己下载或是找其他替换就好)
只获取cpu和内存信息,其他类似,可以自己扩展。
import java.util.Map; import com.alibaba.fastjson.JSON; import com.google.api.client.util.Maps; import org.hyperic.sigar.CpuInfo; import org.hyperic.sigar.CpuPerc; import org.hyperic.sigar.Mem; import org.hyperic.sigar.Sigar; import org.hyperic.sigar.SigarException; import org.hyperic.sigar.Swap; /** * <p>Description:</p> * <p>Copyright:Copyright (c) 2016</p> * <p>Company://////</p> * <p>Email:///////</p> * * @author weijian * @date 16-10-25:下午2:04 * */ public class SigarUtils { private static Sigar sigar; public static Sigar getInstance() { if (null == sigar) { sigar = new Sigar(); } return sigar; } /** * 获取cpu信息返回json * * @return String * @throws SigarException */ public static String getCpuInfosListMap() throws SigarException { Map<String,Object> retMap = Maps.newHashMap(); CpuInfo[] cpuInfos = getInstance().getCpuInfoList(); CpuPerc[] cpuPercs = getInstance().getCpuPercList(); int count = cpuInfos.length; for (int i = 0; i < count; i++) { Map<String, Object> cpuMap = Maps.newHashMap(); cpuMap.put("amounts", cpuInfos[i].getMhz());//总量Mhz cpuMap.put("Vendor", cpuInfos[i].getVendor());//供应商 cpuMap.put("model", cpuInfos[i].getModel());//类型 cpuMap.put("cacheSize", cpuInfos[i].getCacheSize());//缓冲存储器数量 cpuMap.put("user", cpuPercs[i].getUser());//用户使用率 cpuMap.put("sys", cpuPercs[i].getSys());//系统使用率 cpuMap.put("wait", cpuPercs[i].getWait());//当前等待率 cpuMap.put("nice", cpuPercs[i].getNice());//错误率 cpuMap.put("idle", cpuPercs[i].getIdle());//空闲率 cpuMap.put("combined", cpuPercs[i].getCombined());//总使用率 retMap.put("cpu"+ i, cpuMap); } return JSON.toJSONString(retMap); } /** * 获取内存信息返回json * * @return * @throws SigarException */ public static String getMemoryInfosMap() throws SigarException { Map<String, Object> retmap = Maps.newHashMap(); Mem mem = getInstance().getMem(); Swap swap = getInstance().getSwap(); retmap.put("Total", mem.getTotal() / 1024L + "K"); retmap.put("Used", mem.getUsed() / 1024L + "K"); retmap.put("Free", mem.getFree() / 1024L + "K"); retmap.put("swapTotal", swap.getTotal() / 1024L + "K"); retmap.put("swapUsed", swap.getUsed() / 1024L + "K"); retmap.put("swapFree", swap.getFree() / 1024L + "K"); return JSON.toJSONString(retma 4000 p); } public static void main(String[] args){ try { System.out.println(SigarUtils.getCpuInfosListMap()); System.out.println(SigarUtils.getMemoryInfosMap()); } catch (SigarException e) { } } }
运行结果:(json格式,可自己修改)
{ "cpu2":{ "wait":0, "cacheSize":6144, "amounts":3700, "idle":0.2916666666666667, "model":"Core(TM) i5-4590 CPU @ 3.30GHz", "Vendor":"Intel", "combined":0.7083333333333333, "sys":0.16666666666666666, "user":0.5416666666666666, "nice":0 }, "cpu3":{ "wait":0, "cacheSize":6144, "amounts":3700, "idle":0.6326530612244898, "model":"Core(TM) i5-4590 CPU @ 3.30GHz", "Vendor":"Intel", "combined":0.36734693877551017, "sys":0.08163265306122448, "user":0.2857142857142857, "nice":0 }, "cpu0":{ "wait":0, "cacheSize":6144, "amounts":3700, "idle":0.6458333333333334, "model":"Core(TM) i5-4590 CPU @ 3.30GHz", "Vendor":"Intel", "combined":0.3541666666666667, "sys":0.0625, "user":0.2916666666666667, "nice":0 }, "cpu1":{ "wait":0, "cacheSize":6144, "amounts":3700, "idle":0.52, "model":"Core(TM) i5-4590 CPU @ 3.30GHz", "Vendor":"Intel", "combined":0.48000000000000004, "sys":0.08, "user":0.4, "nice":0 } } { "swapFree":"6711980K", "Used":"7766396K", "swapUsed":"1554768K", "Total":"8055600K", "swapTotal":"8266748K", "Free":"289204K" }
相关文章推荐
- 中级JavaScript例子, 如何实现一个简单实用的模板套用机制, GXTemplate , 第一章(估计要写9章)
- 简单实用的操作RMS的小例子
- android中控件ListView的简单实用例子
- 中级JavaScript例子, 如何实现一个简单实用的模板套用机制, GXTemplate , 第2章(估计要写9章)
- 一个简单实用的AJAX例子
- PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
- Android中 AIDL 的简单实用例子
- 商城常用滚动的效果,代码简单实用,学习的好例子
- PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
- 简单实用的操作RMS小例子
- java实用RSA的简单例子
- JCL实用程序简单小例子
- 简单实用的有关序列化与反序化的小例子
- digester简单实用的例子
- javascript中的简单.实用的例子
- 一个简单实用而且动太的导航条的例子
- 中级JavaScript例子, 如何实现一个简单实用的模板套用机制, GXTemplate , 第3章(估计要写9章)
- Java编程思想-泛型-简单泛型例子
- expect安装及简单实用例子
- Spring定时任务的简单例子----非常实用----不需要做什么改动就可以使用哦