sigar(System Information Gatherer And Reporter)简介
Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API,由C语言实现的。可以收集的信息包括:
1, CPU信息,包括基本信息(vendor、model、mhz、cacheSize)和统计信息(user、sys、idle、nice、wait)
2, 文件系统信息,包括Filesystem、Size、Used、Avail、Use%、Type
3, 事件信息,类似Service Control Manager
4, 内存信息,物理内存和交换内存的总数、使用数、剩余数;RAM的大小
5, 网络信息,包括网络接口信息和网络路由信息
6, 进程信息,包括每个进程的内存、CPU占用数、状态、参数、句柄
7, IO信息,包括IO的状态,读写大小等
8, 服务状态信息
9, 系统信息,包括操作系统版本,系统资源限制情况,系统运行时间以及负载,JAVA的版本信息等.
Sigar在Java中的使用:
示例代码:
package cn.jsi.buaa;import org.hyperic.sigar.Cpu;import org.hyperic.sigar.CpuInfo;import org.hyperic.sigar.CpuPerc;import org.hyperic.sigar.Sigar;import org.hyperic.sigar.SigarException;import com.thoughtworks.xstream.XStream;/*** Cpu数据** 使用Sigar获得CPU的基本信息、使用百分比、使用时间**/public class SigarTest {private CpuInfo info;private CpuPerc perc;private Cpu timer;public SigarTest() {}public void populate(Sigar sigar) throws SigarException {info = sigar.getCpuInfoList()[0];perc = sigar.getCpuPerc();timer = sigar.getCpu();}public static SigarTest gather(Sigar sigar) throws SigarException {SigarTest data = new SigarTest();data.populate(sigar);return data;}public static void main(String[] args) throws Exception {System.out.println(System.getProperty("java.library.path"));Sigar sigar = new Sigar();SigarTest cpuData = SigarTest.gather(sigar);XStream xstream = new XStream();xstream.alias("CpuData", SigarTest.class);System.out.println(xstream.toXML(cpuData));}}
Windows:将sigar.jar包放到classpath下,将sigar-amd64-winnt.dll放到环境变量java.library.path下。
Linux:将sigar.jar包放到classpath下,将libsigar-x86-linux.so放到环境变量java.library.path下。
获取网卡的流量
和网卡相关的统计数据主要有:网卡信息(ip地址、子网掩码、mac地址等)、网卡的吞吐量、流量等等。
当然了使用sigar也可以获得这些数据。
下面通过例子说明:
Java代码
1. package lab.sigar;
2.
3. import java.util.ArrayList;
4. import java.util.List;
5.
6. import org.hyperic.sigar.NetInterfaceConfig;
7. import org.hyperic.sigar.NetInterfaceStat;
8. import org.hyperic.sigar.Sigar;
9. import org.hyperic.sigar.SigarException;
10.
11. import com.thoughtworks.xstream.XStream;
12.
13. /**
14. * 网卡信息、接口数据、流量
15. *
16. * 使用Sigar获得网卡信息
17. *
18. */
19. public class NetInterfaceData {
20.
21. private NetInterfaceConfig config;
22. private NetInterfaceStat stat;
23. private long rxbps;
24. private long txbps;
25.
26. public NetInterfaceData() {}
27.
28. public void populate(Sigar sigar, String name)
29. throws SigarException {
30.
31. config = sigar.getNetInterfaceConfig(name);
32.
33. try {
34.
35. long start = System.currentTimeMillis();
36. NetInterfaceStat statStart = sigar.getNetInterfaceStat(name);
37. long rxBytesStart = statStart.getRxBytes();
38. long txBytesStart = statStart.getTxBytes();
39. Thread.sleep(1000);
40. long end = System.currentTimeMillis();
41. NetInterfaceStat statEnd = sigar.getNetInterfaceStat(name);
42. long rxBytesEnd = statEnd.getRxBytes();
43. long txBytesEnd = statEnd.getTxBytes();
44.
45. rxbps = (rxBytesEnd - rxBytesStart)*8/(end-start)*1000;
46. txbps = (txBytesEnd - txBytesStart)*8/(end-start)*1000;
47. stat = sigar.getNetInterfaceStat(name);
48. } catch (SigarException e) {
49.
50. } catch (Exception e) {
51.
52. }
53. }
54.
55. public static NetInterfaceData gather(Sigar sigar, String name)
56. throws SigarException {
57.
58. NetInterfaceData data = new NetInterfaceData();
59. data.populate(sigar, name);
60. return data;
61. }
62.
63. public NetInterfaceConfig getConfig() {
64. return config;
65. }
66.
67. public NetInterfaceStat getStat() {
68. return stat;
69. }
70.
71.
72.
73. public long getRxbps() {
74. return rxbps;
75. }
76.
77. public long getTxbps() {
78. return txbps;
79. }
80.
81. public static void main(String[] args) throws Exception {
82. Sigar sigar = new Sigar();
83. String[] netIfs = sigar.getNetInterfaceList();
84. List netIfList = new ArrayList();
85. for ( String name:netIfs ) {
86. NetInterfaceData netIfData1 = NetInterfaceData.gather(sigar, name);
87. netIfList.add(netIfData1);
88. }
89. XStream xstream = new XStream();
90. xstream.alias("NetInterfaceDatas", List.class);
91. xstream.alias("NetInterfaceData", NetInterfaceData.class);
92. System.out.println(xstream.toXML(netIfList));
93. }
94. }
获取内存数据
内存的主要指标有:物理内存的大小、使用数、剩余数;交换内存的大小、使用数、剩余数;RAM的大小等等。
下面通过例子说明:
Java代码
1. package lab.sigar;
2.
3. import org.hyperic.sigar.Mem;
4. import org.hyperic.sigar.Sigar;
5. import org.hyperic.sigar.SigarException;
6. import org.hyperic.sigar.Swap;
7.
8. import com.thoughtworks.xstream.XStream;
9.
10. /**
11. * 内存数据
12. *
13. * 使用Sigar获得系统内存信息
14. *
15. */
16. public class MemoryData {
17. private Mem mem;
18. private Swap swap;
19.
20. public MemoryData() {
21. }
22.
23. public void populate(Sigar sigar) throws SigarException {
24. mem = sigar.getMem();
25. swap = sigar.getSwap();
26. }
27.
28. public static MemoryData gather(Sigar sigar) throws SigarException {
29. MemoryData data = new MemoryData();
30. data.populate(sigar);
31. return data;
32. }
33.
34. public static void main(String[] args) throws Exception {
35. Sigar sigar = new Sigar();
36. MemoryData memData = MemoryData.gather(sigar);
37. XStream xstream = new XStream();
38. xstream.alias("MemData", MemoryData.class);
39. System.out.println(xstream.toXML(memData));
40. }
41.
42. }
输出:
Xml代码
1. <MemData> 2. <mem> 3. <total>1073102848</total> 4. <ram>1024</ram> 5. <used>932274176</used> 6. <free>140828672</free> 7. <actualUsed>932274176</actualUsed> 8. <actualFree>140828672</actualFree> 9. </mem> 10. <swap> 11. <total>2580328448</total> 12. <used>870432768</used> 13. <free>1709895680</free> 14. <pageIn>137691</pageIn> 15. <pageOut>19392</pageOut> 16. </swap> 17. </MemData>
sigar(System Information Gatherer And Reporter)简介相关推荐
- [译]5.1. System Initialization Overview 系统初始化简介
目录:http://www.cnblogs.com/WuCountry/archive/2008/11/15/1333960.html [不提供插图,读者最好从网上下载源书] 5.1. Syste ...
- System Information for Windows
运行平台:Windows 软件授权:自由软件 软件大小:1.76MB System Information for Windows是一款功能非常强大的系统信息管理工具,除了可查看电脑中所有的软硬件信息 ...
- LTE系统信息块SIB:LTE system information blocks-MIB,SIB-1,2,3,4,5,6,7,8,9,10,11
Table of Contents SI静态部分和动态部分有两个部分. 静态部件称为 MIB 动态部件称为 SIB Detail Sample LTE System Information Block ...
- System Information Viewer系统信息、硬件规格检测器
名称缩写为SIV 的System Information Viewer 是一个相当恐怖的小软件,所谓的「恐怖」指的是他的软件介面很乱.很丑,不过上面提供的信息很好,这软件最大的特色就是把整个Windo ...
- 计算机设备信息检测,硬件信息检测软件(HiBit System Information)
硬件信息检测软件HiBitSystemInformation是一款便携好用的单文件硬件信息检测软件,利用软件用户能够对电脑的硬件.软件和进程进行管理和检测,有需要的可以下载使用. 相关软件软件大小版本 ...
- 第2章 系统信息(System Information)
小区搜索过程之后,UE已经与小区取得下行同步,得到小区的PCI(Physical Cell ID)以及检测到系统帧的timing(即10ms timing).接着,UE需要获取到小区的系统信息(Sys ...
- Java中System.exit()方法的功能简介说明
转自: Java中System.exit()方法的功能简介说明 下文笔者讲述java代码中System.exit()方法的功能简介说明,如下所示: Java中System.exit()方法功能:此方法 ...
- 电压测试软件中文,System Information Viewer(SIV主板电压温度测试)
SystemInformationViewer,SIV主板电压温度测试,SIV技嘉出的用来测试主板电压,CPU温度,风扇速度,硬盘使用率,和内存使用率的软件,很好用的. 相关软件软件大小版本说明下载地 ...
- Write Your Own Operating System Tutorial(中文版) - 简介
操作系统实作入门 首先说说我们用到的工具. 既然要写操作系统,必不可少的就是需要汇编语言的编译器.如果你一时找不到tasm,masm等年头已久的东西,你可以试试nasm(netwide as ...
- Confluence 6 数据库表-系统信息(System information)
2019独角兽企业重金招聘Python工程师标准>>> 这些表格有存储数据相关的状态和 Confluence 站点的相关配置信息. confversion 被用来在升级系统的时候确定 ...
最新文章
- PSS:简单有效的End-to-End检测
- Airflow安装部署
- TypeScript 素描 - 函数
- jsp 知乎_JSP
- 用计算机控制人造卫星和导弹的发射属于,2008年6月全国高校计算机等级考试(广西考区)一级笔试试题卷...
- Bali BaloCSS天才
- ajax--跨域问题及三种简单的解决方案
- flask nginx+uwsgi超时设置
- Luyten 启动报错 This Application requires a Java Runtime Environment 1.7.0-1.8.0问题
- 数学建模论文写作——框架和要点
- 摄动法在计算机中的应用,H理论在计算机控制系统摄动模型中的应用研究
- 浏览器怎么导入导出|删除书签,方法步骤来咯
- LVGL中文字体制作
- 彻底理解“EBIT、EBITDA与净利润 ”| 联系与区别
- 猫哥教你写爬虫 029--爬虫初探-requests
- 人口logistic模型公式_最新人口指数增长模型和logistic模型教学文案
- 雷电模拟器一键宏实现循环点击
- LVDS、FPD-Link/GMSL、MIPI的区别
- Argox-ME-2140打印机操作注意事项
- pycharm网站打不开的解决措施