java獲取服務器信息

引入依賴

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
==========
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章