亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > 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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情精品久久久久| 在线成人中文字幕| 成人观看高清在线观看免费| 成人xxxx视频| 久久亚洲综合国产精品99麻豆精品福利| 欧美激情一区二区三区久久久| 国产精品视频资源| 国产欧美一区二区三区在线| 欧美另类极品videosbest最新版本| 国产欧美久久久久久| 青青草99啪国产免费| 国产亚洲精品激情久久| 国产精品嫩草视频| 在线观看国产精品淫| 久久影视电视剧免费网站| 日韩一区二区福利| 久久久久久久久久久成人| 久久九九精品99国产精品| 日韩欧美亚洲综合| 色综合久久精品亚洲国产| 亚洲久久久久久久久久久| 国产精品av免费在线观看| 亚洲天堂色网站| 国产成人精彩在线视频九色| 亚洲色图综合久久| 亚洲精品一区二区三区婷婷月| 亚洲精品wwww| 亚洲午夜国产成人av电影男同| 视频一区视频二区国产精品| 欧美xxxx14xxxxx性爽| 一本色道久久综合亚洲精品小说| 久久久精品2019中文字幕神马| 欧美极品少妇与黑人| 国内久久久精品| 日韩欧美国产网站| 国产一区二区三区在线| 91在线视频成人| 欧美黑人巨大xxx极品| 久久天天躁狠狠躁老女人| 国产精品视频自拍| 亚洲va男人天堂| 日本中文字幕久久看| 欧美日韩精品在线播放| 亚洲人精品午夜在线观看| 久久精品国产成人| 国产精品成人久久久久| 97视频免费看| xvideos成人免费中文版| 中文字幕亚洲在线| 亚洲成av人乱码色午夜| 久久久国产在线视频| 欧美视频不卡中文| 欧美色视频日本高清在线观看| 久久久久久久久国产精品| 国内精品久久久久久中文字幕| 青草热久免费精品视频| 国产成人综合精品在线| 亚洲欧美国产制服动漫| 日韩精品黄色网| 欧美性xxxxx极品| 久久久免费精品视频| 亚洲一区久久久| 欧美在线一区二区视频| 中文亚洲视频在线| 在线播放精品一区二区三区| 久久精品一本久久99精品| 91午夜在线播放| 成人在线观看视频网站| 欧美激情久久久| 51ⅴ精品国产91久久久久久| 中文字幕日韩精品有码视频| 欧美国产精品va在线观看| 欧美孕妇孕交黑巨大网站| 黄色精品在线看| 国产精品你懂得| 97精品国产97久久久久久| 精品无人区乱码1区2区3区在线| 国产精品福利观看| 亚洲天堂av电影| 中文亚洲视频在线| 欧美三级免费观看| 日韩高清免费在线| 精品高清一区二区三区| 欧美肥婆姓交大片| 97视频在线看| 亚洲女同精品视频| 黄色成人在线播放| 在线播放精品一区二区三区| 亚洲大胆人体在线| 亚洲永久免费观看| 亚洲电影av在线| 欧美视频二区36p| 国产一区欧美二区三区| 国产精品视频资源| 7m第一福利500精品视频| 国产精品久久一区| 欧美日韩国产精品一区| 精品国产31久久久久久| 亚洲日本中文字幕免费在线不卡| 国产午夜精品美女视频明星a级| 日韩美女激情视频| 日韩中文在线视频| 欧美人成在线视频| 国产黑人绿帽在线第一区| 亚洲影院污污.| 欧美日韩ab片| 亚洲色图色老头| 国产999在线| 国产一区深夜福利| 国产区精品视频| 性亚洲最疯狂xxxx高清| 俺去啦;欧美日韩| 91高清视频免费观看| 国产精品小说在线| 热门国产精品亚洲第一区在线| 91沈先生作品| 久久网福利资源网站| 欧美激情极品视频| 欧美另类交人妖| 正在播放国产一区| 亚洲女人天堂av| 亚洲国产精品视频在线观看| 日韩少妇与小伙激情| 欧美第一淫aaasss性| 欧美黑人极品猛少妇色xxxxx| 日韩精品在线免费播放| 韩国欧美亚洲国产| 国产一区二区三区在线观看网站| 精品国产欧美成人夜夜嗨| 国产精品pans私拍| 在线日韩精品视频| 中文字幕v亚洲ⅴv天堂| 日韩中文字幕视频在线观看| 亚洲人成免费电影| 亚洲国产欧美一区二区丝袜黑人| 日韩影视在线观看| 91久久久久久| 亚洲天堂av在线免费观看| 国产精品视频色| 亚洲精品电影网| 日韩av在线网| www日韩中文字幕在线看| 欧美日韩在线视频首页| 亚洲综合在线中文字幕| 亚洲黄页视频免费观看| 久久久午夜视频| 欧美性受xxxx白人性爽| 欧美丰满片xxx777| 欧美另类第一页| 日韩视频免费大全中文字幕| 亚洲а∨天堂久久精品喷水| 性色av一区二区三区在线观看| 国产a∨精品一区二区三区不卡| 欧美尺度大的性做爰视频| 日韩女优在线播放| 美女视频久久黄| 久久精品视频在线播放| 92福利视频午夜1000合集在线观看| 精品久久久免费| 国产日韩欧美一二三区| 欧美性猛交xxxx久久久| 国产aaa精品| 91久久久久久久一区二区| 国产99久久久欧美黑人|