java獲取伺服器資訊
阿新 • • 發佈:2021-01-03
引入依賴
build.gradle
compile 'net.java.dev.jna:jna:5.6.0'
compile 'net.java.dev.jna:jna-platform:5.6.0'
compile 'com.github.oshi:oshi-core:5.3.7'
compile 'cn.hutool:hutool-all:5.5.6'
mvaen
<dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>5.6.0</version> </dependency> <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna-platform</artifactId> <version>5.6.0</version> </dependency> <dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core</artifactId> <version>5.3.7</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.5.6</version> </dependency>
程式碼
private String format(long size) { if (size < 1024) { return size + "B"; } else { size = size / 1024; } if (size < 1024) { return size + "KB"; } else { size = size / 1024; } if (size < 1024) { size = size * 100; return size / 100 + "." + size % 100 + "MB"; } else { size = size * 100 / 1024; return size / 100 + "." + size % 100 + "GB"; } } @Test public void info() { Console.log("======= 作業系統資訊 ======"); OsInfo osInfo = SystemUtil.getOsInfo(); Console.log("作業系統:{}", osInfo.getName()); Console.log("系統版本:{}", osInfo.getVersion()); Console.log("系統架構:{}", osInfo.getArch()); Console.log("JVM總記憶體:{}", format(SystemUtil.getTotalMemory())); Console.log("JVM剩餘記憶體:{}", format(SystemUtil.getFreeMemory())); Console.log("======= java資訊 ======"); JavaRuntimeInfo runtimeInfo = SystemUtil.getJavaRuntimeInfo(); Console.log("java版本:{}", runtimeInfo.getVersion()); Console.log("java架構:{}", runtimeInfo.getSunArchDataModel()); Console.log("java目錄:{}", runtimeInfo.getHomeDir()); SystemInfo systemInfo = new SystemInfo(); HardwareAbstractionLayer hardware = systemInfo.getHardware(); OperatingSystem operatingSystem = systemInfo.getOperatingSystem(); Console.log("======= CPU資訊 ======"); CentralProcessor cpu = hardware.getProcessor(); CentralProcessor.ProcessorIdentifier cpuInfo = cpu.getProcessorIdentifier(); Console.log("cpu數量:{}", cpu.getPhysicalPackageCount()); Console.log("cpu核心數:{}", cpu.getPhysicalProcessorCount()); Console.log("cpu執行緒數:{}", cpu.getLogicalProcessorCount()); Console.log("cpuID:{}", cpuInfo.getProcessorID()); Console.log("cpu名稱:{}", cpuInfo.getName()); Console.log("cpu標識:{}", cpuInfo.getIdentifier()); Console.log("======= 主機板資訊 ======"); ComputerSystem computer = hardware.getComputerSystem(); Console.log("主機板型號:{}", computer.getModel()); Console.log("主機板序列號:{}", computer.getSerialNumber()); Console.log("======= 記憶體資訊 ======"); GlobalMemory memory = hardware.getMemory(); Console.log("記憶體大小:{}", format(memory.getTotal())); Console.log("可用記憶體:{}", format(memory.getAvailable())); Console.log("=========="); List<PhysicalMemory> memoryList = memory.getPhysicalMemory(); memoryList.forEach((item) -> { Console.log("記憶體型號:{}", item.getManufacturer()); Console.log("記憶體規格:{}", item.getMemoryType()); Console.log("記憶體主頻:{}", format(item.getClockSpeed())); Console.log("記憶體大小:{}", format(item.getCapacity())); Console.log("=========="); }); Console.log("======= 物理磁碟資訊 ======"); List<HWDiskStore> diskList = hardware.getDiskStores(); diskList.forEach((disk) -> { Console.log("名稱:{}", disk.getName()); Console.log("型號:{}", disk.getModel()); Console.log("序號:{}", disk.getSerial()); Console.log("大小:{}", format(disk.getSize())); Console.log("=========="); }); Console.log("======= 邏輯磁碟資訊 ======"); FileSystem fileSystem = operatingSystem.getFileSystem(); List<OSFileStore> fileList = fileSystem.getFileStores(true); fileList.forEach((file) -> { Console.log("名稱:{}", file.getName()); Console.log("UUID:{}", file.getUUID()); Console.log("碟符:{}", file.getMount()); Console.log("檔案型別:{}", file.getType()); Console.log("總大小:{}", format(file.getTotalSpace())); Console.log("剩餘大小:{}", format(file.getUsableSpace())); Console.log("=========="); }); }
輸出
======= 作業系統資訊 ====== 作業系統:Windows 10 系統版本:10.0 系統架構:amd64 JVM總記憶體:243.0MB JVM剩餘記憶體:189.0MB ======= java資訊 ====== java版本:1.8.0_221-b11 java架構:64 java目錄:C:\app\Java\x64\jdk1.8.0_221\jre ======= CPU資訊 ====== cpu數量:1 cpu核心數:4 cpu執行緒數:8 cpuID:BFEBFBFF000906E9 cpu名稱:Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz cpu標識:Intel64 Family 6 Model 158 Stepping 9 ======= 主機板資訊 ====== 主機板型號:Inspiron 15 7000 Gaming 主機板序列號:58D9Y32 ======= 記憶體資訊 ====== 記憶體大小:15.86GB 可用記憶體:5.18GB ========== 記憶體型號:Samsung 記憶體規格:DDR4 記憶體主頻:2.23GB 記憶體大小:8.0GB ========== 記憶體型號:SK Hynix 記憶體規格:DDR4 記憶體主頻:2.23GB 記憶體大小:8.0GB ========== ======= 物理磁碟資訊 ====== 19:22:14.526 [main] DEBUG oshi.util.platform.windows.PerfCounterQuery - Localized PhysicalDisk to PhysicalDisk 名稱:\\.\PHYSICALDRIVE0 型號:KINGSTON SUV500M8240G (標準磁碟驅動器) 序號:50026B768258ACA9 大小:223.56GB ========== 名稱:\\.\PHYSICALDRIVE1 型號:TOSHIBA MQ01ABD100 (標準磁碟驅動器) 序號: 87C3S6KZS 大小:931.51GB ========== ======= 邏輯磁碟資訊 ====== 名稱:本地固定磁碟 (C:) UUID:e4769774-92f9-431e-ad1d-96963d9d03bc 碟符:C:\ 檔案型別:NTFS 總大小:221.37GB 剩餘大小:88.8GB ========== 名稱:本地固定磁碟 (D:) UUID:81c881c4-76ff-48af-b0c1-2070f753310f 碟符:D:\ 檔案型別:NTFS 總大小:300.0GB 剩餘大小:218.97GB ========== 名稱:本地固定磁碟 (E:) UUID:a689f086-7265-4c3e-b622-8a641787dd5e 碟符:E:\ 檔案型別:NTFS 總大小:300.72GB 剩餘大小:136.71GB ========== 名稱:本地固定磁碟 (F:) UUID:8c126ad0-bf59-457d-8c2f-e3248e03e9f7 碟符:F:\ 檔案型別:NTFS 總大小:330.65GB 剩餘大小:213.28GB ==========