国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java獲取服務器基本信息的方法

2019-11-26 15:04:10
字體:
來源:轉載
供稿:網友

本文實例講述了java獲取服務器基本信息的方法。分享給大家供大家參考。具體如下:

利用第三方的jar包:(Hyperic-hq官方網站:http://www.hyperic.com) 通過Hyperic-hq產品的基礎包sigar.jar來實現服務器狀態數據的獲取。Sigar.jar包是通過本地方法來調用操作系統API來獲取系統相關數據。Windows操作系統下Sigar.jar依賴sigar-amd64-winnt.dll或sigar-x86-winnt.dll,linux 操作系統下則依賴libsigar-amd64-linux.so或libsigar-x86-linux.so

import java.net.InetAddress; import java.net.UnknownHostException; 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.SigarNotImplementedException; import org.hyperic.sigar.Swap;public class SysInfo {// 1.CPU資源信息 // a)CPU數量(單位:個) public static int getCpuCount() throws SigarException {  Sigar sigar = new Sigar();  try {   return sigar.getCpuInfoList().length;  } finally {   sigar.close();  } } // b)CPU的總量(單位:HZ)及CPU的相關信息 public void getCpuTotal() {  Sigar sigar = new Sigar();  CpuInfo[] infos;  try {   infos = sigar.getCpuInfoList();   for (int i = 0; i < infos.length; i++) {// 不管是單塊CPU還是多CPU都適用   CpuInfo info = infos[i];   System.out.println("mhz=" + info.getMhz());// CPU的總量MHz   System.out.println("vendor=" + info.getVendor());// 獲得CPU的賣主,如:Intel   System.out.println("model=" + info.getModel());// 獲得CPU的類別,如:Celeron   System.out.println("cache size=" + info.getCacheSize());// 緩沖存儲器數量   }  } catch (SigarException e) {   e.printStackTrace();  } } // c)CPU的用戶使用量、系統使用剩余量、總的剩余量、總的使用占用量等(單位:100%) public void testCpuPerc() {  Sigar sigar = new Sigar();  // 方式一,主要是針對一塊CPU的情況  CpuPerc cpu;  try {   cpu = sigar.getCpuPerc();   printCpuPerc(cpu);  } catch (SigarException e) {   e.printStackTrace();  }  // 方式二,不管是單塊CPU還是多CPU都適用  CpuPerc cpuList[] = null;  try {   cpuList = sigar.getCpuPercList();  } catch (SigarException e) {   e.printStackTrace();   return;  }  for (int i = 0; i < cpuList.length; i++) {   printCpuPerc(cpuList[i]);  } } private void printCpuPerc(CpuPerc cpu) {  System.out.println("User :" + CpuPerc.format(cpu.getUser()));// 用戶使用率  System.out.println("Sys :" + CpuPerc.format(cpu.getSys()));// 系統使用率  System.out.println("Wait :" + CpuPerc.format(cpu.getWait()));// 當前等待率  System.out.println("Nice :" + CpuPerc.format(cpu.getNice()));//  System.out.println("Idle :" + CpuPerc.format(cpu.getIdle()));// 當前空閑率  System.out.println("Total :" + CpuPerc.format(cpu.getCombined()));// 總的使用率 } // 2.內存資源信息 public void getPhysicalMemory() {  // a)物理內存信息  Sigar sigar = new Sigar();  Mem mem;  try {   mem = sigar.getMem();   // 內存總量   System.out.println("Total = " + mem.getTotal() / 1024L + "K av");   // 當前內存使用量   System.out.println("Used = " + mem.getUsed() / 1024L + "K used");   // 當前內存剩余量   System.out.println("Free = " + mem.getFree() / 1024L + "K free");  // b)系統頁面文件交換區信息   Swap swap = sigar.getSwap();   // 交換區總量   System.out.println("Total = " + swap.getTotal() / 1024L + "K av");   // 當前交換區使用量   System.out.println("Used = " + swap.getUsed() / 1024L + "K used");   // 當前交換區剩余量   System.out.println("Free = " + swap.getFree() / 1024L + "K free");  } catch (SigarException e) {   e.printStackTrace();  } } // 3.操作系統信息 // a)取到當前操作系統的名稱: public String getPlatformName() {  String hostname = "";  try {   hostname = InetAddress.getLocalHost().getHostName();  } catch (Exception exc) {   Sigar sigar = new Sigar();   try {   hostname = sigar.getNetInfo().getHostName();   } catch (SigarException e) {   hostname = "localhost.unknown";   } finally {   sigar.close();   }  }  return hostname; } // b)取當前操作系統的信息 public void testGetOSInfo() {  OperatingSystem OS = OperatingSystem.getInstance();  // 操作系統內核類型如: 386、486、586等x86  System.out.println("OS.getArch() = " + OS.getArch());  System.out.println("OS.getCpuEndian() = " + OS.getCpuEndian());//  System.out.println("OS.getDataModel() = " + OS.getDataModel());//  // 系統描述  System.out.println("OS.getDescription() = " + OS.getDescription());  System.out.println("OS.getMachine() = " + OS.getMachine());//  // 操作系統類型  System.out.println("OS.getName() = " + OS.getName());  System.out.println("OS.getPatchLevel() = " + OS.getPatchLevel());//  // 操作系統的賣主  System.out.println("OS.getVendor() = " + OS.getVendor());  // 賣主名稱  System.out   .println("OS.getVendorCodeName() = " + OS.getVendorCodeName());  // 操作系統名稱  System.out.println("OS.getVendorName() = " + OS.getVendorName());  // 操作系統賣主類型  System.out.println("OS.getVendorVersion() = " + OS.getVendorVersion());  // 操作系統的版本號  System.out.println("OS.getVersion() = " + OS.getVersion()); } // c)取當前系統進程表中的用戶信息 public void testWho() {  try {   Sigar sigar = new Sigar();   org.hyperic.sigar.Who[] who = sigar.getWhoList();   if (who != null && who.length > 0) {   for (int i = 0; i < who.length; i++) {    System.out.println("/n~~~~~~~~~" + String.valueOf(i)+ "~~~~~~~~~");    org.hyperic.sigar.Who _who = who[i];    System.out.println("getDevice() = " + _who.getDevice());    System.out.println("getHost() = " + _who.getHost());    System.out.println("getTime() = " + _who.getTime());    // 當前系統進程表中的用戶名    System.out.println("getUser() = " + _who.getUser());   }   }  } catch (SigarException e) {   e.printStackTrace();  } } // 4.資源信息(主要是硬盤) // a)取硬盤已有的分區及其詳細信息(通過sigar.getFileSystemList()來獲得FileSystem列表對象,然后對其進行編歷): public void testFileSystemInfo() throws Exception {  Sigar sigar = new Sigar();  FileSystem fslist[] = sigar.getFileSystemList();  //String dir = System.getProperty("user.home");// 當前用戶文件夾路徑  for (int i = 0; i < fslist.length; i++) {   System.out.println("/n~~~~~~~~~~" + i + "~~~~~~~~~~");   FileSystem fs = fslist[i];   // 分區的盤符名稱   System.out.println("fs.getDevName() = " + fs.getDevName());   // 分區的盤符名稱   System.out.println("fs.getDirName() = " + fs.getDirName());   System.out.println("fs.getFlags() = " + fs.getFlags());//   // 文件系統類型,比如 FAT32、NTFS   System.out.println("fs.getSysTypeName() = " + fs.getSysTypeName());   // 文件系統類型名,比如本地硬盤、光驅、網絡文件系統等   System.out.println("fs.getTypeName() = " + fs.getTypeName());   // 文件系統類型   System.out.println("fs.getType() = " + fs.getType());   FileSystemUsage usage = null;   try {   usage = sigar.getFileSystemUsage(fs.getDirName());   } catch (SigarException e) {   if (fs.getType() == 2)    throw e;   continue;   }   switch (fs.getType()) {   case 0: // TYPE_UNKNOWN :未知   break;   case 1: // TYPE_NONE   break;   case 2: // TYPE_LOCAL_DISK : 本地硬盤   // 文件系統總大小   System.out.println(" Total = " + usage.getTotal() + "KB");   // 文件系統剩余大小   System.out.println(" Free = " + usage.getFree() + "KB");   // 文件系統可用大小   System.out.println(" Avail = " + usage.getAvail() + "KB");   // 文件系統已經使用量   System.out.println(" Used = " + usage.getUsed() + "KB");   double usePercent = usage.getUsePercent() * 100D;   // 文件系統資源的利用率   System.out.println(" Usage = " + usePercent + "%");   break;   case 3:// TYPE_NETWORK :網絡   break;   case 4:// TYPE_RAM_DISK :閃存   break;   case 5:// TYPE_CDROM :光驅   break;   case 6:// TYPE_SWAP :頁面交換   break;   }   System.out.println(" DiskReads = " + usage.getDiskReads());   System.out.println(" DiskWrites = " + usage.getDiskWrites());  }  return; } // 5.網絡信息 // a)當前機器的正式域名 public String getFQDN() {  Sigar sigar = null;  try {   return InetAddress.getLocalHost().getCanonicalHostName();  } catch (UnknownHostException e) {   try {   sigar = new Sigar();   return sigar.getFQDN();   } catch (SigarException ex) {   return null;   } finally {   sigar.close();   }  } } // b)取到當前機器的IP地址 public String getDefaultIpAddress() {  String address = null;  try {   address = InetAddress.getLocalHost().getHostAddress();   // 沒有出現異常而正常當取到的IP時,如果取到的不是網卡循回地址時就返回   // 否則再通過Sigar工具包中的方法來獲取   if (!NetFlags.LOOPBACK_ADDRESS.equals(address)) {   return address;   }  } catch (UnknownHostException e) {   // hostname not in DNS or /etc/hosts  }  Sigar sigar = new Sigar();  try {   address = sigar.getNetInterfaceConfig().getAddress();  } catch (SigarException e) {   address = NetFlags.LOOPBACK_ADDRESS;  } finally {   sigar.close();  }  return address; } // c)取到當前機器的MAC地址 public String getMAC() {  Sigar sigar = null;  try {   sigar = new Sigar();   String[] ifaces = sigar.getNetInterfaceList();   String hwaddr = null;   for (int i = 0; i < ifaces.length; i++) {   NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(ifaces[i]);   if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress())    || (cfg.getFlags() & NetFlags.IFF_LOOPBACK) != 0   || NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {    continue;   }   /*    * 如果存在多張網卡包括虛擬機的網卡,默認只取第一張網卡的MAC地址,如果要返回所有的網卡(包括物理的和虛擬的)則可以修改方法的返回類型為數組或Collection    * ,通過在for循環里取到的多個MAC地址。    */  hwaddr = cfg.getHwaddr();   break;   }   return hwaddr != null  hwaddr : null;  } catch (Exception e) {   return null;  } finally {   if (sigar != null)   sigar.close();  } } // d)獲取網絡流量等信息 public void testNetIfList() throws Exception {  Sigar sigar = new Sigar();  String ifNames[] = sigar.getNetInterfaceList();  for (int i = 0; i < ifNames.length; i++) {   String name = ifNames[i];   NetInterfaceConfig ifconfig = sigar.getNetInterfaceConfig(name);   print("/nname = " + name);// 網絡設備名   print("Address = " + ifconfig.getAddress());// IP地址   print("Netmask = " + ifconfig.getNetmask());// 子網掩碼   if ((ifconfig.getFlags() & 1L) <= 0L) {   print("!IFF_UP...skipping getNetInterfaceStat");   continue;   }   try {   NetInterfaceStat ifstat = sigar.getNetInterfaceStat(name);   print("RxPackets = " + ifstat.getRxPackets());// 接收的總包裹數   print("TxPackets = " + ifstat.getTxPackets());// 發送的總包裹數   print("RxBytes = " + ifstat.getRxBytes());// 接收到的總字節數   print("TxBytes = " + ifstat.getTxBytes());// 發送的總字節數   print("RxErrors = " + ifstat.getRxErrors());// 接收到的錯誤包數   print("TxErrors = " + ifstat.getTxErrors());// 發送數據包時的錯誤數   print("RxDropped = " + ifstat.getRxDropped());// 接收時丟棄的包數   print("TxDropped = " + ifstat.getTxDropped());// 發送時丟棄的包數   } catch (SigarNotImplementedException e) {   } catch (SigarException e) {   print(e.getMessage());   }  } } void print(String msg) {  System.out.println(msg); } // e)一些其他的信息 public void getEthernetInfo() {  Sigar sigar = null;  try {   sigar = new Sigar();   String[] ifaces = sigar.getNetInterfaceList();   for (int i = 0; i < ifaces.length; i++) {   NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(ifaces[i]);   if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress())    || (cfg.getFlags() & NetFlags.IFF_LOOPBACK) != 0   || NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {    continue;   }   System.out.println("cfg.getAddress() = " + cfg.getAddress());// IP地址   System.out    .println("cfg.getBroadcast() = " + cfg.getBroadcast());// 網關廣播地址   System.out.println("cfg.getHwaddr() = " + cfg.getHwaddr());// 網卡MAC地址   System.out.println("cfg.getNetmask() = " + cfg.getNetmask());// 子網掩碼   System.out.println("cfg.getDescription() = "   + cfg.getDescription());// 網卡描述信息   System.out.println("cfg.getType() = " + cfg.getType());//   System.out.println("cfg.getDestination() = "   + cfg.getDestination());   System.out.println("cfg.getFlags() = " + cfg.getFlags());//   System.out.println("cfg.getMetric() = " + cfg.getMetric());   System.out.println("cfg.getMtu() = " + cfg.getMtu());   System.out.println("cfg.getName() = " + cfg.getName());   System.out.println();   }  } catch (Exception e) {   System.out.println("Error while creating GUID" + e);  } finally {   if (sigar != null)   sigar.close();  } }}

希望本文所述對大家的java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沈阳市| 塔城市| 平山县| 昌平区| 卓资县| 潼南县| 南华县| 湟中县| 修文县| 高淳县| 湖北省| 桂东县| 牙克石市| 无极县| 定州市| 财经| 阿坝县| 庆阳市| 曲麻莱县| 扬州市| 三亚市| 三江| 汝州市| 蓬溪县| 林州市| 阿尔山市| 泰兴市| 兴宁市| 苍山县| 清水河县| 山东省| 长宁县| 台中市| 屏南县| 岐山县| 石林| 城口县| 东丰县| 二连浩特市| 渭源县| 兴化市|