4.Sigar获取磁盘信息

经常会出现磁盘满,无法写入数据的情况。为此我们就需要对磁盘进行监控,也就是对文件系统进行监控。 

文件系统的指标有:名称、分区类型等基本信息;使用情况、读写次数等统计信息。

Java代码:

使用的Jar包:sigar.jar、xstream-1.3.1.jar

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package test1;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import org.hyperic.sigar.FileSystem;  
  7. import org.hyperic.sigar.FileSystemUsage;  
  8. import org.hyperic.sigar.Sigar;  
  9. import org.hyperic.sigar.SigarException;  
  10.   
  11. import com.thoughtworks.xstream.XStream;  
  12.   
  13. /** 
  14.  * 获得文件系统信息 
  15.  */  
  16. public class FileSystemData {  
  17.   
  18.     private FileSystem config;  
  19.     private FileSystemUsage stat;  
  20.   
  21.     public void populate(Sigar sigar, FileSystem fs) throws SigarException {  
  22.         config = fs;  
  23.         try {  
  24.             stat = sigar.getFileSystemUsage(fs.getDirName());  
  25.         } catch (SigarException e) {  
  26.   
  27.         }  
  28.     }  
  29.   
  30.     public static FileSystemData gather(Sigar sigar, FileSystem fs) throws SigarException {  
  31.         FileSystemData data = new FileSystemData();  
  32.         data.populate(sigar, fs);  
  33.         return data;  
  34.     }  
  35.   
  36.     public static void main(String[] args) throws Exception {  
  37.         Sigar sigar = new Sigar();  
  38.         FileSystem[] fsArr = sigar.getFileSystemList();  
  39.         List<FileSystemData> fsList = new ArrayList<FileSystemData>();  
  40.         for (FileSystem fs : fsArr) {  
  41.             FileSystemData fsData = FileSystemData.gather(sigar, fs);  
  42.             fsList.add(fsData);  
  43.         }  
  44.   
  45.         XStream xstream = new XStream();  
  46.         xstream.alias("FileSystemDatas", List.class);  
  47.         xstream.alias("FileSystemData", FileSystemData.class);  
  48.         System.out.println(xstream.toXML(fsList));  
  49.     }  
  50.   
  51.     public FileSystem getConfig() {  
  52.         return config;  
  53.     }  
  54.   
  55.     public FileSystemUsage getStat() {  
  56.         return stat;  
  57.     }  
  58. }  

输出:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <FileSystemDatas>  
  2.   <FileSystemData>  
  3.     <config>  
  4.       <dirName>C:\</dirName>  
  5.       <devName>C:\</devName>  
  6.       <typeName>local</typeName>  
  7.       <sysTypeName>NTFS</sysTypeName>  
  8.       <options>rw</options>  
  9.       <type>2</type>  
  10.       <flags>0</flags>  
  11.     </config>  
  12.     <stat>  
  13.       <total>48010220</total>  
  14.       <free>15470760</free>  
  15.       <used>32539460</used>  
  16.       <avail>15470760</avail>  
  17.       <files>-1</files>  
  18.       <freeFiles>-1</freeFiles>  
  19.       <diskReads>139390</diskReads>  
  20.       <diskWrites>203701</diskWrites>  
  21.       <diskReadBytes>1010284032</diskReadBytes>  
  22.       <diskWriteBytes>4063549440</diskWriteBytes>  
  23.       <diskQueue>0.0</diskQueue>  
  24.       <diskServiceTime>-1.0</diskServiceTime>  
  25.       <usePercent>0.68</usePercent>  
  26.     </stat>  
  27.   </FileSystemData>  
  28.   <FileSystemData>  
  29.     <config>  
  30.       <dirName>D:\</dirName>  
  31.       <devName>D:\</devName>  
  32.       <typeName>local</typeName>  
  33.       <sysTypeName>NTFS</sysTypeName>  
  34.       <options>rw</options>  
  35.       <type>2</type>  
  36.       <flags>0</flags>  
  37.     </config>  
  38.     <stat>  
  39.       <total>144769712</total>  
  40.       <free>139399108</free>  
  41.       <used>5370604</used>  
  42.       <avail>139399108</avail>  
  43.       <files>-1</files>  
  44.       <freeFiles>-1</freeFiles>  
  45.       <diskReads>28937</diskReads>  
  46.       <diskWrites>305</diskWrites>  
  47.       <diskReadBytes>750892032</diskReadBytes>  
  48.       <diskWriteBytes>1506816</diskWriteBytes>  
  49.       <diskQueue>0.0</diskQueue>  
  50.       <diskServiceTime>-1.0</diskServiceTime>  
  51.       <usePercent>0.04</usePercent>  
  52.     </stat>  
  53.   </FileSystemData>  
  54.   <FileSystemData>  
  55.     <config>  
  56.       <dirName>E:\</dirName>  
  57.       <devName>E:\</devName>  
  58.       <typeName>local</typeName>  
  59.       <sysTypeName>NTFS</sysTypeName>  
  60.       <options>rw</options>  
  61.       <type>2</type>  
  62.       <flags>0</flags>  
  63.     </config>  
  64.     <stat>  
  65.       <total>144769712</total>  
  66.       <free>130269648</free>  
  67.       <used>14500064</used>  
  68.       <avail>130269648</avail>  
  69.       <files>-1</files>  
  70.       <freeFiles>-1</freeFiles>  
  71.       <diskReads>3474</diskReads>  
  72.       <diskWrites>10618</diskWrites>  
  73.       <diskReadBytes>88275968</diskReadBytes>  
  74.       <diskWriteBytes>1341539328</diskWriteBytes>  
  75.       <diskQueue>0.0</diskQueue>  
  76.       <diskServiceTime>-1.0</diskServiceTime>  
  77.       <usePercent>0.11</usePercent>  
  78.     </stat>  
  79.   </FileSystemData>  
  80.   <FileSystemData>  
  81.     <config>  
  82.       <dirName>F:\</dirName>  
  83.       <devName>F:\</devName>  
  84.       <typeName>local</typeName>  
  85.       <sysTypeName>NTFS</sysTypeName>  
  86.       <options>rw</options>  
  87.       <type>2</type>  
  88.       <flags>0</flags>  
  89.     </config>  
  90.     <stat>  
  91.       <total>150834252</total>  
  92.       <free>145898596</free>  
  93.       <used>4935656</used>  
  94.       <avail>145898596</avail>  
  95.       <files>-1</files>  
  96.       <freeFiles>-1</freeFiles>  
  97.       <diskReads>544</diskReads>  
  98.       <diskWrites>1129</diskWrites>  
  99.       <diskReadBytes>4238848</diskReadBytes>  
  100.       <diskWriteBytes>35478016</diskWriteBytes>  
  101.       <diskQueue>0.0</diskQueue>  
  102.       <diskServiceTime>-1.0</diskServiceTime>  
  103.       <usePercent>0.04</usePercent>  
  104.     </stat>  
  105.   </FileSystemData>  
  106. </FileSystemDatas>  
转自http://blog.csdn.net/yin_jw/article/details/40188743



Sigar 是一个跨平台的系统信息收集库,可以获取系统的 CPU、内存、磁盘、网络等信息。以下是获取系统信息的示例代码: ```java import org.hyperic.sigar.*; public class SigarDemo { public static void main(String[] args) throws SigarException { Sigar sigar = new Sigar(); System.out.println("CPU信息:"); CpuInfo[] cpuInfos = sigar.getCpuInfoList(); for (CpuInfo cpuInfo : cpuInfos) { System.out.println("CPU型号:" + cpuInfo.getModel()); System.out.println("CPU频率:" + cpuInfo.getMhz() + "MHz"); System.out.println("CPU核数:" + cpuInfo.getTotalCores()); } System.out.println("内存信息:"); Mem mem = sigar.getMem(); System.out.println("总内存:" + mem.getTotal() / 1024 / 1024 + "MB"); System.out.println("已用内存:" + mem.getUsed() / 1024 / 1024 + "MB"); System.out.println("剩余内存:" + mem.getFree() / 1024 / 1024 + "MB"); System.out.println("磁盘信息:"); FileSystem[] fileSystems = sigar.getFileSystemList(); for (FileSystem fileSystem : fileSystems) { System.out.println("盘符:" + fileSystem.getDirName()); System.out.println("盘符类型:" + fileSystem.getTypeName()); FileSystemUsage usage = sigar.getFileSystemUsage(fileSystem.getDirName()); System.out.println("总大小:" + usage.getTotal() / 1024 / 1024 + "MB"); System.out.println("已用大小:" + usage.getUsed() / 1024 / 1024 + "MB"); System.out.println("剩余大小:" + usage.getFree() / 1024 / 1024 + "MB"); } System.out.println("网络信息:"); NetInterfaceConfig[] netConfigs = sigar.getNetInterfaceConfigList(); for (NetInterfaceConfig netConfig : netConfigs) { System.out.println("网络设备名:" + netConfig.getName()); System.out.println("IP地址:" + netConfig.getAddress()); System.out.println("子网掩码:" + netConfig.getNetmask()); } } } ``` 注意:需要引入 sigar.jar 和 sigar-amd64-winnt.dll(或其它平台对应的库文件)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值