java 硬件_JAVA通过oshi获取系统和硬件信息

importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importoshi.SystemInfo;import oshi.hardware.*;importoshi.hardware.CentralProcessor.TickType;import oshi.software.os.*;importoshi.software.os.OperatingSystem.ProcessSort;importoshi.util.FormatUtil;importoshi.util.Util;importjava.util.Arrays;importjava.util.List;/*** The Class SystemInfoTest.

*

*@authordblock[at]dblock[dot]org*/

public classSystemInfoTest {/*** The main method.

*

*@paramargs the arguments*/

public static voidmain(String[] args) {//Options: ERROR > WARN > INFO > DEBUG > TRACE

Logger LOG = LoggerFactory.getLogger(SystemInfoTest.class);

LOG.info("Initializing System...");

SystemInfo si= newSystemInfo();

HardwareAbstractionLayer hal=si.getHardware();

OperatingSystem os=si.getOperatingSystem();

System.out.println(os);

LOG.info("Checking computer system...");

printComputerSystem(hal.getComputerSystem());

LOG.info("Checking Processor...");

printProcessor(hal.getProcessor());

LOG.info("Checking Memory...");

printMemory(hal.getMemory());

LOG.info("Checking CPU...");

printCpu(hal.getProcessor());

LOG.info("Checking Processes...");

printProcesses(os, hal.getMemory());

LOG.info("Checking Sensors...");

printSensors(hal.getSensors());

LOG.info("Checking Power sources...");

printPowerSources(hal.getPowerSources());

LOG.info("Checking Disks...");

printDisks(hal.getDiskStores());

LOG.info("Checking File System...");

printFileSystem(os.getFileSystem());

LOG.info("Checking Network interfaces...");

printNetworkInterfaces(hal.getNetworkIFs());

LOG.info("Checking Network parameterss...");

printNetworkParameters(os.getNetworkParams());//hardware: displays

LOG.info("Checking Displays...");

printDisplays(hal.getDisplays());//hardware: USB devices

LOG.info("Checking USB Devices...");

printUsbDevices(hal.getUsbDevices(true));

}private static void printComputerSystem(finalComputerSystem computerSystem) {

System.out.println("manufacturer: " +computerSystem.getManufacturer());

System.out.println("model: " +computerSystem.getModel());

System.out.println("serialnumber: " +computerSystem.getSerialNumber());final Firmware firmware =computerSystem.getFirmware();

System.out.println("firmware:");

System.out.println(" manufacturer: " +firmware.getManufacturer());

System.out.println(" name: " +firmware.getName());

System.out.println(" description: " +firmware.getDescription());

System.out.println(" version: " +firmware.getVersion());

System.out.println(" release date: " + (firmware.getReleaseDate() == null ? "unknown": firmware.getReleaseDate()== null ? "unknown": FormatUtil.formatDate(firmware.getReleaseDate())));final Baseboard baseboard =computerSystem.getBaseboard();

System.out.println("baseboard:");

System.out.println(" manufacturer: " +baseboard.getManufacturer());

System.out.println(" model: " +baseboard.getModel());

System.out.println(" version: " +baseboard.getVersion());

System.out.println(" serialnumber: " +baseboard.getSerialNumber());

}private static voidprintProcessor(CentralProcessor processor) {

System.out.println(processor);

System.out.println(" " + processor.getPhysicalPackageCount() + " physical CPU package(s)");

System.out.println(" " + processor.getPhysicalProcessorCount() + " physical CPU core(s)");

System.out.println(" " + processor.getLogicalProcessorCount() + " logical CPU(s)");

System.out.println("Identifier: " +processor.getIdentifier());

System.out.println("ProcessorID: " +processor.getProcessorID());

}private static voidprintMemory(GlobalMemory memory) {

System.out.println("Memory: " + FormatUtil.formatBytes(memory.getAvailable()) + "/"

+FormatUtil.formatBytes(memory.getTotal()));

System.out.println("Swap used: " + FormatUtil.formatBytes(memory.getSwapUsed()) + "/"

+FormatUtil.formatBytes(memory.getSwapTotal()));

}private static voidprintCpu(CentralProcessor processor) {

System.out.println("Uptime: " +FormatUtil.formatElapsedSecs(processor.getSystemUptime()));

System.out.println("Context Switches/Interrupts: " + processor.getContextSwitches() + " / " +processor.getInterrupts());long[] prevTicks =processor.getSystemCpuLoadTicks();

System.out.println("CPU, IOWait, and IRQ ticks @ 0 sec:" +Arrays.toString(prevTicks));//Wait a second...

Util.sleep(1000);long[] ticks =processor.getSystemCpuLoadTicks();

System.out.println("CPU, IOWait, and IRQ ticks @ 1 sec:" +Arrays.toString(ticks));long user = ticks[TickType.USER.getIndex()] -prevTicks[TickType.USER.getIndex()];long nice = ticks[TickType.NICE.getIndex()] -prevTicks[TickType.NICE.getIndex()];long sys = ticks[TickType.SYSTEM.getIndex()] -prevTicks[TickType.SYSTEM.getIndex()];long idle = ticks[TickType.IDLE.getIndex()] -prevTicks[TickType.IDLE.getIndex()];long iowait = ticks[TickType.IOWAIT.getIndex()] -prevTicks[TickType.IOWAIT.getIndex()];long irq = ticks[TickType.IRQ.getIndex()] -prevTicks[TickType.IRQ.getIndex()];long softirq = ticks[TickType.SOFTIRQ.getIndex()] -prevTicks[TickType.SOFTIRQ.getIndex()];long steal = ticks[TickType.STEAL.getIndex()] -prevTicks[TickType.STEAL.getIndex()];long totalCpu = user + nice + sys + idle + iowait + irq + softirq +steal;

System.out.format("User: %.1f%% Nice: %.1f%% System: %.1f%% Idle: %.1f%% IOwait: %.1f%% IRQ: %.1f%% SoftIRQ: %.1f%% Steal: %.1f%%%n",

100d* user / totalCpu, 100d * nice / totalCpu, 100d * sys / totalCpu, 100d * idle /totalCpu,

100d* iowait / totalCpu, 100d * irq / totalCpu, 100d * softirq / totalCpu, 100d * steal /totalCpu);

System.out.format("CPU load: %.1f%% (counting ticks)%n", processor.getSystemCpuLoadBetweenTicks() * 100);

System.out.format("CPU load: %.1f%% (OS MXBean)%n", processor.getSystemCpuLoad() * 100);double[] loadAverage = processor.getSystemLoadAverage(3);

System.out.println("CPU load averages:" + (loadAverage[0] < 0 ? " N/A" : String.format(" %.2f", loadAverage[0]))+ (loadAverage[1] < 0 ? " N/A" : String.format(" %.2f", loadAverage[1]))+ (loadAverage[2] < 0 ? " N/A" : String.format(" %.2f", loadAverage[2])));//per core CPU

StringBuilder procCpu = new StringBuilder("CPU load per processor:");double[] load =processor.getProcessorCpuLoadBetweenTicks();for (doubleavg : load) {

procCpu.append(String.format(" %.1f%%", avg * 100));

}

System.out.println(procCpu.toString());

}private static voidprintProcesses(OperatingSystem os, GlobalMemory memory) {

System.out.println("Processes: " + os.getProcessCount() + ", Threads: " +os.getThreadCount());//Sort by highest CPU

List procs = Arrays.asList(os.getProcesses(5, ProcessSort.CPU));

System.out.println(" PID %CPU %MEM VSZ RSS Name");for (int i = 0; i < procs.size() && i < 5; i++) {

OSProcess p=procs.get(i);

System.out.format(" %5d %5.1f %4.1f %9s %9s %s%n", p.getProcessID(),

100d* (p.getKernelTime() + p.getUserTime()) /p.getUpTime(),

100d* p.getResidentSetSize() /memory.getTotal(), FormatUtil.formatBytes(p.getVirtualSize()),

FormatUtil.formatBytes(p.getResidentSetSize()), p.getName());

}

}private static voidprintSensors(Sensors sensors) {

System.out.println("Sensors:");

System.out.format(" CPU Temperature: %.1f°C%n", sensors.getCpuTemperature());

System.out.println(" Fan Speeds: " +Arrays.toString(sensors.getFanSpeeds()));

System.out.format(" CPU Voltage: %.1fV%n", sensors.getCpuVoltage());

}private static voidprintPowerSources(PowerSource[] powerSources) {

StringBuilder sb= new StringBuilder("Power: ");if (powerSources.length == 0) {

sb.append("Unknown");

}else{double timeRemaining = powerSources[0].getTimeRemaining();if (timeRemaining < -1d) {

sb.append("Charging");

}else if (timeRemaining <0d) {

sb.append("Calculating time remaining");

}else{

sb.append(String.format("%d:%02d remaining", (int) (timeRemaining / 3600),

(int) (timeRemaining / 60) % 60));

}

}for(PowerSource pSource : powerSources) {

sb.append(String.format("%n %s @ %.1f%%", pSource.getName(), pSource.getRemainingCapacity() *100d));

}

System.out.println(sb.toString());

}private static voidprintDisks(HWDiskStore[] diskStores) {

System.out.println("Disks:");for(HWDiskStore disk : diskStores) {boolean readwrite = disk.getReads() > 0 || disk.getWrites() > 0;

System.out.format(" %s: (model: %s - S/N: %s) size: %s, reads: %s (%s), writes: %s (%s), xfer: %s ms%n",

disk.getName(), disk.getModel(), disk.getSerial(),

disk.getSize()> 0 ? FormatUtil.formatBytesDecimal(disk.getSize()) : "?",

readwrite? disk.getReads() : "?", readwrite ? FormatUtil.formatBytes(disk.getReadBytes()) : "?",

readwrite? disk.getWrites() : "?", readwrite ? FormatUtil.formatBytes(disk.getWriteBytes()) : "?",

readwrite? disk.getTransferTime() : "?");

HWPartition[] partitions=disk.getPartitions();if (partitions == null) {//TODO Remove when all OS's implemented

continue;

}for(HWPartition part : partitions) {

System.out.format(" |-- %s: %s (%s) Maj:Min=%d:%d, size: %s%s%n", part.getIdentification(),

part.getName(), part.getType(), part.getMajor(), part.getMinor(),

FormatUtil.formatBytesDecimal(part.getSize()),

part.getMountPoint().isEmpty()? "" : " @ " +part.getMountPoint());

}

}

}private static voidprintFileSystem(FileSystem fileSystem) {

System.out.println("File System:");

System.out.format(" File Descriptors: %d/%d%n", fileSystem.getOpenFileDescriptors(),

fileSystem.getMaxFileDescriptors());

OSFileStore[] fsArray=fileSystem.getFileStores();for(OSFileStore fs : fsArray) {long usable =fs.getUsableSpace();long total =fs.getTotalSpace();

System.out.format(" %s (%s) [%s] %s of %s free (%.1f%%) is %s "

+ (fs.getLogicalVolume() != null && fs.getLogicalVolume().length() > 0 ? "[%s]" : "%s")+ " and is mounted at %s%n",

fs.getName(), fs.getDescription().isEmpty()? "file system": fs.getDescription(), fs.getType(),

FormatUtil.formatBytes(usable), FormatUtil.formatBytes(fs.getTotalSpace()), 100d* usable /total,

fs.getVolume(), fs.getLogicalVolume(), fs.getMount());

}

}private static voidprintNetworkInterfaces(NetworkIF[] networkIFs) {

System.out.println("Network interfaces:");for(NetworkIF net : networkIFs) {

System.out.format(" Name: %s (%s)%n", net.getName(), net.getDisplayName());

System.out.format(" MAC Address: %s %n", net.getMacaddr());

System.out.format(" MTU: %s, Speed: %s %n", net.getMTU(), FormatUtil.formatValue(net.getSpeed(), "bps"));

System.out.format(" IPv4: %s %n", Arrays.toString(net.getIPv4addr()));

System.out.format(" IPv6: %s %n", Arrays.toString(net.getIPv6addr()));boolean hasData = net.getBytesRecv() > 0 || net.getBytesSent() > 0 || net.getPacketsRecv() > 0

|| net.getPacketsSent() > 0;

System.out.format(" Traffic: received %s/%s%s; transmitted %s/%s%s %n",

hasData? net.getPacketsRecv() + " packets" : "?",

hasData? FormatUtil.formatBytes(net.getBytesRecv()) : "?",

hasData? " (" + net.getInErrors() + " err)" : "",

hasData? net.getPacketsSent() + " packets" : "?",

hasData? FormatUtil.formatBytes(net.getBytesSent()) : "?",

hasData? " (" + net.getOutErrors() + " err)" : "");

}

}private static voidprintNetworkParameters(NetworkParams networkParams) {

System.out.println("Network parameters:");

System.out.format(" Host name: %s%n", networkParams.getHostName());

System.out.format(" Domain name: %s%n", networkParams.getDomainName());

System.out.format(" DNS servers: %s%n", Arrays.toString(networkParams.getDnsServers()));

System.out.format(" IPv4 Gateway: %s%n", networkParams.getIpv4DefaultGateway());

System.out.format(" IPv6 Gateway: %s%n", networkParams.getIpv6DefaultGateway());

}private static voidprintDisplays(Display[] displays) {

System.out.println("Displays:");int i = 0;for(Display display : displays) {

System.out.println(" Display " + i + ":");

System.out.println(display.toString());

i++;

}

}private static voidprintUsbDevices(UsbDevice[] usbDevices) {

System.out.println("USB Devices:");for(UsbDevice usbDevice : usbDevices) {

System.out.println(usbDevice.toString());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值