av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

Java實用工具之使用oshi獲取主機信息的方法

瀏覽:3日期:2022-08-17 10:46:49

最近在籌劃做一個監(jiān)控系統(tǒng)。其中就要獲取主機信息,其中遇到一些問題。在此做個記錄,以便以后查閱。

在該監(jiān)控系統(tǒng)中,想要做到主機的CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)、線程、JVM內(nèi)存、JVM GC 等維度的監(jiān)控,JVM方面的監(jiān)控還好說,直接用JMX做就行了,關(guān)鍵是主機信息不好做監(jiān)控,JDK沒有直接的方案獲取系統(tǒng)主機信息。在剛開始想到了以下幾種方式獲取主機維度的信息。

一、命令行

剛開始想的是用最常用的命令行獲取主機維度的信息,具體做法是針對不同的系統(tǒng),寫不同的命令。比如說Linux系統(tǒng),使用TOP命令就能獲取到CPU、內(nèi)存等方面的信息。

top -b -n 1

執(zhí)行該TOP命令就能獲取到CPU、內(nèi)存等維度的信息

Tasks: 515 total, 1 running, 511 sleeping, 3 stopped, 0 zombie Cpu(s): 14.5%us, 5.3%sy, 0.0%ni, 77.0%id, 0.8%wa, 0.0%hi, 2.4%si, 0.0%stMem: 65779104k total, 62037048k used, 3742056k free, 425804k buffersSwap: 0k total, 0k used, 0k free, 21948492k cached

這種方式雖然好,但是需要針對不同系統(tǒng)做兼容。為了將懶字發(fā)揮到極致于是我就開始尋找現(xiàn)有的開源組件。然后找到了一個sigar的東西,貌似這個在業(yè)界內(nèi)應(yīng)用還挺廣的。

二、sigar

sigar的api用起來也挺方便的,簡單且使用人數(shù)多。

/ CPU數(shù)量(單位:個) int cpuLength = sigar.getCpuInfoList().length; print(cpuLength); // CPU的總量(單位:HZ)及CPU的相關(guān)信息 CpuInfo infos[] = sigar.getCpuInfoList(); for (int i = 0; i < infos.length; i++) {// 不管是單塊CPU還是多CPU都適用 CpuInfo info = infos[i]; print('mhz=' + info.getMhz());// CPU的總量MHz print('vendor=' + info.getVendor());// 獲得CPU的賣主,如:Intel print('model=' + info.getModel());// 獲得CPU的類別,如:Celeron print('cache size=' + info.getCacheSize());// 緩沖存儲器數(shù)量 }

但是,sigar需要根據(jù)不同的系統(tǒng)下載不同的庫文件,傾入性較高。

sigar 庫文件windows平臺:sigar-x86-winnt.dlllinux平臺:libsigar-x86-linux.so或solaris平臺: libsigar-x86-solaris.so或libsigar-sparc-solaris.so或libsigar-sparc64-solaris.so64位平臺:分為至強的libsigar-ia64-linux.so和AMD的libsigar-amd64-linux.so,sigar-amd64-winnt.dll

這樣就讓我很為難了,于是繼續(xù)在網(wǎng)上尋找。終于找到了oshi。

三、oshi

看看oshi是怎么獲取系統(tǒng)信息的吧

首先,引入jar包

<dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core</artifactId> <version>${oshi.version}</version></dependency>

然后,開擼

// 獲取主機信息SystemInfo systemInfo = new SystemInfo();// 獲取操作系統(tǒng)信息OperatingSystem operatingSystem = systemInfo.getOperatingSystem();operatingSystem.getNetworkParams().getHostName();operatingSystem.getFamily();operatingSystem.getVersion().getVersion();operatingSystem.getVersion().getBuildNumber();operatingSystem.getBitness();operatingSystem.getProcessCount();operatingSystem.getThreadCount();

就是這么簡單,不需要不同系統(tǒng)引入不同的庫文件,也不用自己做系統(tǒng)兼容。oshi自己做了兼容,目前大概兼容些這些系統(tǒng): Linux, Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX。

四、對比

以上幾種方式,大概可以做個這樣的總結(jié):

命令行:靈活度高,兼容性強,但是如果要兼容多個平臺的話,自己做還是有些麻煩。 sigar:社區(qū)活躍度高,參考文檔全面,麻煩在于需要不同平臺引入不同的庫文件。 oshi:拿來主義,使用方便,缺點在于文檔少。不過個人認為看看github上的文檔就夠了,使用過程也沒有什么坑。

綜上,因為我個人在開發(fā)的時候選擇的是oshi。

到此這篇關(guān)于Java實用工具之使用oshi獲取主機信息的方法的文章就介紹到這了,更多相關(guān)java 使用oshi獲取主機信息內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: av免费网 | 日一日操一操 | 中文字幕三级 | 三级黄色在线观看 | 99久久国产视频 | 久久久久久久国产 | 免费观看av网站 | 久久激情视频 | 亚洲视频三区 | 天天草天天干 | 国产三级精品三级在线观看 | 97精品视频在线观看 | 麻豆一级片 | 中文在线字幕免费观看 | 日日不卡av | 欧美成人精品激情在线观看 | 国产精品自拍小视频 | 成人av网站在线观看 | 亚洲激情中文字幕 | 中文字幕1区 | a级片在线免费观看 | 激情综合久久 | 精品亚洲国产成人av制服丝袜 | 久久精品国产免费 | 成人一级黄色片 | 91av视频在线观看 | 日本天堂网| 久久精品视频一区二区 | 黄色免费大片 | 17c在线 | 日韩有码在线视频 | 久久久久久久久国产 | 人人爱人人插 | 亚洲视频中文字幕 | 激情综合网站 | 欧美精品网站 | 欧美日韩三区 | 欧美人xxxx| 国产成人精品亚洲男人的天堂 | 91精品国产成人www | 91亚洲国产成人精品性色 |