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)简介相关推荐

  1. [译]5.1. System Initialization Overview 系统初始化简介

    目录:http://www.cnblogs.com/WuCountry/archive/2008/11/15/1333960.html   [不提供插图,读者最好从网上下载源书] 5.1. Syste ...

  2. System Information for Windows

    运行平台:Windows 软件授权:自由软件 软件大小:1.76MB System Information for Windows是一款功能非常强大的系统信息管理工具,除了可查看电脑中所有的软硬件信息 ...

  3. 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 ...

  4. System Information Viewer系统信息、硬件规格检测器

    名称缩写为SIV 的System Information Viewer 是一个相当恐怖的小软件,所谓的「恐怖」指的是他的软件介面很乱.很丑,不过上面提供的信息很好,这软件最大的特色就是把整个Windo ...

  5. 计算机设备信息检测,硬件信息检测软件(HiBit System Information)

    硬件信息检测软件HiBitSystemInformation是一款便携好用的单文件硬件信息检测软件,利用软件用户能够对电脑的硬件.软件和进程进行管理和检测,有需要的可以下载使用. 相关软件软件大小版本 ...

  6. 第2章 系统信息(System Information)

    小区搜索过程之后,UE已经与小区取得下行同步,得到小区的PCI(Physical Cell ID)以及检测到系统帧的timing(即10ms timing).接着,UE需要获取到小区的系统信息(Sys ...

  7. Java中System.exit()方法的功能简介说明

    转自: Java中System.exit()方法的功能简介说明 下文笔者讲述java代码中System.exit()方法的功能简介说明,如下所示: Java中System.exit()方法功能:此方法 ...

  8. 电压测试软件中文,System Information Viewer(SIV主板电压温度测试)

    SystemInformationViewer,SIV主板电压温度测试,SIV技嘉出的用来测试主板电压,CPU温度,风扇速度,硬盘使用率,和内存使用率的软件,很好用的. 相关软件软件大小版本说明下载地 ...

  9. Write Your Own Operating System Tutorial(中文版) - 简介

    操作系统实作入门 首先说说我们用到的工具.      既然要写操作系统,必不可少的就是需要汇编语言的编译器.如果你一时找不到tasm,masm等年头已久的东西,你可以试试nasm(netwide as ...

  10. Confluence 6 数据库表-系统信息(System information)

    2019独角兽企业重金招聘Python工程师标准>>> 这些表格有存储数据相关的状态和 Confluence 站点的相关配置信息. confversion 被用来在升级系统的时候确定 ...

最新文章

  1. PSS:简单有效的End-to-End检测
  2. Airflow安装部署
  3. TypeScript 素描 - 函数
  4. jsp 知乎_JSP
  5. 用计算机控制人造卫星和导弹的发射属于,2008年6月全国高校计算机等级考试(广西考区)一级笔试试题卷...
  6. Bali BaloCSS天才
  7. ajax--跨域问题及三种简单的解决方案
  8. flask nginx+uwsgi超时设置
  9. Luyten 启动报错 This Application requires a Java Runtime Environment 1.7.0-1.8.0问题
  10. 数学建模论文写作——框架和要点
  11. 摄动法在计算机中的应用,H理论在计算机控制系统摄动模型中的应用研究
  12. 浏览器怎么导入导出|删除书签,方法步骤来咯
  13. LVGL中文字体制作
  14. 彻底理解“EBIT、EBITDA与净利润 ”| 联系与区别
  15. 猫哥教你写爬虫 029--爬虫初探-requests
  16. 人口logistic模型公式_最新人口指数增长模型和logistic模型教学文案
  17. 雷电模拟器一键宏实现循环点击
  18. LVDS、FPD-Link/GMSL、MIPI的区别
  19. Argox-ME-2140打印机操作注意事项
  20. pycharm网站打不开的解决措施

热门文章

  1. 关于二叉树的前序、中序、后序三种遍历
  2. 自动驾驶工程师的进阶之路
  3. 并行运算遇到的fatal error(已解决)
  4. 普渡大学计算机科学和计算机工程,老师能讲一下普渡大学西拉法叶分校电气与计算机工程怎么样?...
  5. 利用 MAC 自带的 mount_ntfs 工具加载ntfs移动硬盘进行数据读写
  6. 表格中合并同类项并求和(物料统计) 并去除数据中的公式项
  7. 深入理解CSS动画animation
  8. 疯狂的 Web 应用开源项目
  9. python绘制国际象棋规则口诀_国际象棋摆棋口诀
  10. 每股收益具体怎么来的