1.导入maven

<dependency><groupId>com.github.oshi</groupId><artifactId>oshi-core</artifactId><version>4.5.2</version>
</dependency>

2.API

对象 方法 描述
SystemInfo getOperatingSystem() 获取操作系统信息,OperatingSystem
getHardware() 获取硬件信息,HardwareAbstractionLayer
OperatingSystem getFamily() 获取操作系统名称,例如 Windows
getManufacturer() 获取供货商,例如 Microsoft
getVersion() 获取操作系统版本信息
getFileSystem() 获取系统硬盘信息,FileSystem
getProcesses(int pId, OperatingSystem.ProcessSort var2) 通过 进程id 获取进程信息,并设置排序方式,OSProcess[]
getProcess(int pId) 通过 进程id 获取一个进程信息,OSProcess
getProcesses(Collection<Integer> pId) 获取多个进程信息,List<OSProcess>
getChildProcesses(int var1, int var2, OperatingSystem.ProcessSort var3) 获取子进程,OSProcess[]
getProcessId() 获取进程id
getProcessCount() 获取进程数量
getThreadCount() 获取网络相关参数,NetworkParams
HardwareAbstractionLayer getComputerSystem() 获取计算机系统信息,ComputerSystem
getProcessor() 获取处理器信息,CentralProcessor
getMemory() 获取内存信息,GlobalMemory
getPowerSources() 获取电源信息,PowerSource
getDiskStores() 获取硬件磁盘信息,HWDiskStore
getNetworkIFs() 获取网络信息,NetworkIF
getDisplays() 获取显示信息,Display
getSensors() 获取传感器信息,Sensors
getUsbDevices(boolean var1) 获取USB设备信息,UsbDevice
OperatingSystemVersion getBuildNumber() 获取内部编号
getCodeName() 代码名称
getVersion() 获取版本
FileSystem getMaxFileDescriptors() 获取最大文件描述符
getOpenFileDescriptors() 获取打开文件描述符
getFileStores() 获取盘符相关信息
OSProcess getName() 进程程序名称
getPath()     进程程序所在位置
getCommandLine()     获取命令行
getCurrentWorkingDirectory()     获取当前工作目录
getUser()     获取用户信息
getUserID()     获取用户id
getGroup()     获取组信息
getGroupID()     获取组id
getState()     状态
getProcessID()     获取进程id
getParentProcessID()   获取父进程id
getThreadCount()     获取线程数
getPriority()     优先级
getVirtualSize()     虚拟大小
getResidentSetSize()     实际使用物理内存
getKernelTime()     内核时间
getUserTime()     用户时间
getUpTime()     正常运行时间
getStartTime()     开始时间
getBytesRead()     读取字节
getBytesWritten()     写入字节
getOpenFiles()     打开文件数量
NetworkParams getDnsServers()   获取域名地址
getHostName()     获取主机名
getDomainName()   获取域名
getIpv4DefaultGateway()     获取默认Ipv4
getIpv6DefaultGateway()     获取默认Ipv6
OSFileStore getName()     磁盘名称
getVolume()          文件集  
getLogicalVolume()     合理的文件集
getMount()     盘符
getDescription()     描述
getType()     类型
getUUID()   磁盘UUID
getUsableSpace()     可用空间
getTotalSpace()     总空间
ComputerSystem   getManufacturer()     获取制造商
getModel()     获取型号
getSerialNumber()     获取序列号
getFirmware()     获取固件信息,Firmware
getBaseboard()     获取外壳信息,Baseboard
Firmware getManufacturer()     获取制造商信息
getName()     获取名称
getDescription()     获取描述信息
getVersion()     获取版本
getReleaseDate()     获取发布时间
Baseboard getManufacturer() 获取制造商信息
getModel()     获取型号
getVersion()     获取版本信息
getSerialNumber()   获取序列号
CentralProcessor  getVendor()     获取供应商
getName()     获取cpu名称
getVendorFreq()     获取供应商频率
getProcessorID()     获取处理器id
getIdentifier()     获取标识符
isCpu64bit()     判断cpu是否为64位的
getStepping()     获取cpu步进
getModel()   获取型号
getFamily()     获取家族
getSystemCpuLoadBetweenTicks()   获取cpu负载间隔刻度
getSystemCpuLoadTicks()   获取cpu负载刻度
getSystemCpuLoad()   获取cpu负载
getSystemLoadAverage()     获取cpu平均负载
getSystemLoadAverage(int var1)   获取cpu平均负载
getProcessorCpuLoadBetweenTicks()  获取处理器cpu负载间隔刻度
getProcessorCpuLoadTicks()     获取处理器cpu负载刻度
getSystemUptime()     获取正常运行时间
getLogicalProcessorCount()     获取逻辑处理器数量
getPhysicalProcessorCount()     获取物理处理器数量
getPhysicalPackageCount()     获取物理包装数量
getContextSwitches()     获取上下文切换数量
getInterrupts()     获取中断
GlobalMemory getTotal()     获取总内存
getAvailable()     获取可用系统运行内存
getSwapTotal()     获取可用虚拟总内存
getSwapUsed()     获取已用虚拟总内存
PowerSource getName()     获取名称
getRemainingCapacity()     获取剩余容量
getTimeRemaining()     获取剩余时间
HWDiskStore getName()     获取名称
getModel()     获取型号
getSerial()     获取序列号
getSize()     获取大小
getReads()     (读长)是高通量测序中一个反应获得的测序序列
getReadBytes()     读取字节
getWrites()     写长
getWriteBytes()     写入字节
getTransferTime()   获取转移时间
getPartitions()     获取分区,HWPartition
getTimeStamp()   获取时间戳
NetworkIF getName()     获取名称
getDisplayName()     获取显示名称
getMTU()     获取最大传输单元
getMacaddr()     获取MAC地址
getIPv4addr()     获取IPv4
getIPv6addr()     获取IPv6
getBytesRecv()     获取接收字节数
getBytesSent()     获取发送字节数
getPacketsRecv()   获取接收数据包
getPacketsSent()     获取发送数据包
getInErrors()     是否可达,正常 0
getOutErrors()     响应错误,无错误 0
getSpeed()     获取速率
getTimeStamp()     获取时间戳
Display getEdid()     中文名称扩展显示器识别数据
Sensors getCpuTemperature()    获取CPU温度
getFanSpeeds()     获取风扇速度
getCpuVoltage()     获取CPU电压
UsbDevice getName()     获取名称
getVendor()     获取供应商
getVendorId()     获取供应商id
getProductId()     获取商品id
getSerialNumber()     获取序列号
getConnectedDevices()     获取连接设备

示例:

工具类:

package com.zwq.utils;import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import oshi.SystemInfo;
import oshi.hardware.CentralProcessor;
import oshi.hardware.GlobalMemory;
import oshi.hardware.HardwareAbstractionLayer;
import oshi.software.os.FileSystem;
import oshi.software.os.OSFileStore;
import oshi.software.os.OperatingSystem;
import oshi.util.Util;import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.DecimalFormat;
import java.util.Properties;public class SystemInfoUtils {private static final int OSHI_WAIT_SECOND = 1000;private static SystemInfo systemInfo = new SystemInfo();private static HardwareAbstractionLayer hardware = systemInfo.getHardware();private static OperatingSystem operatingSystem = systemInfo.getOperatingSystem();//CPU信息public static JSONObject getCpuInfo() {JSONObject cpuInfo = new JSONObject();CentralProcessor processor = hardware.getProcessor();// CPU信息long[] prevTicks = processor.getSystemCpuLoadTicks();Util.sleep(OSHI_WAIT_SECOND);long[] ticks = processor.getSystemCpuLoadTicks();long nice = ticks[CentralProcessor.TickType.NICE.getIndex()] - prevTicks[CentralProcessor.TickType.NICE.getIndex()];long irq = ticks[CentralProcessor.TickType.IRQ.getIndex()] - prevTicks[CentralProcessor.TickType.IRQ.getIndex()];long softirq = ticks[CentralProcessor.TickType.SOFTIRQ.getIndex()] - prevTicks[CentralProcessor.TickType.SOFTIRQ.getIndex()];long steal = ticks[CentralProcessor.TickType.STEAL.getIndex()] - prevTicks[CentralProcessor.TickType.STEAL.getIndex()];long cSys = ticks[CentralProcessor.TickType.SYSTEM.getIndex()] - prevTicks[CentralProcessor.TickType.SYSTEM.getIndex()];long user = ticks[CentralProcessor.TickType.USER.getIndex()] - prevTicks[CentralProcessor.TickType.USER.getIndex()];long iowait = ticks[CentralProcessor.TickType.IOWAIT.getIndex()] - prevTicks[CentralProcessor.TickType.IOWAIT.getIndex()];long idle = ticks[CentralProcessor.TickType.IDLE.getIndex()] - prevTicks[CentralProcessor.TickType.IDLE.getIndex()];long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal;//cpu核数cpuInfo.put("cpu核数", processor.getLogicalProcessorCount());//cpu系统使用率cpuInfo.put("cpu系统使用率", new DecimalFormat("#.##%").format(cSys * 1.0 / totalCpu));//cpu用户使用率cpuInfo.put("cpu用户使用率", new DecimalFormat("#.##%").format(user * 1.0 / totalCpu));//cpu当前等待率cpuInfo.put("cpu当前等待率", new DecimalFormat("#.##%").format(iowait * 1.0 / totalCpu));//cpu当前使用率cpuInfo.put("cpu当前使用率", new DecimalFormat("#.##%").format(1.0 - (idle * 1.0 / totalCpu)));System.out.println("CPU信息 = " + cpuInfo);return cpuInfo;}/*** 系统jvm信息*/public static JSONObject getJvmInfo() {JSONObject cpuInfo = new JSONObject();Properties props = System.getProperties();Runtime runtime = Runtime.getRuntime();long jvmTotalMemoryByte = runtime.totalMemory();long freeMemoryByte = runtime.freeMemory();//jvm总内存cpuInfo.put("jvm总内存", formatByte(runtime.totalMemory()));//空闲空间cpuInfo.put("空闲空间", formatByte(runtime.freeMemory()));//jvm最大可申请cpuInfo.put("jvm最大可申请", formatByte(runtime.maxMemory()));//vm已使用内存cpuInfo.put("vm已使用内存", formatByte(jvmTotalMemoryByte - freeMemoryByte));//jvm内存使用率cpuInfo.put("jvm内存使用率", new DecimalFormat("#.##%").format((jvmTotalMemoryByte - freeMemoryByte) * 1.0 / jvmTotalMemoryByte));//jdk版本cpuInfo.put("jdk版本", props.getProperty("java.version"));//jdk路径cpuInfo.put("jdk路径", props.getProperty("java.home"));System.out.println("系统jvm信息 = " + cpuInfo);return cpuInfo;}/*** 系统内存信息*/public static JSONObject getMemInfo() {JSONObject cpuInfo = new JSONObject();GlobalMemory memory = systemInfo.getHardware().getMemory();//总内存long totalByte = memory.getTotal();//剩余long acaliableByte = memory.getAvailable();//总内存cpuInfo.put("总内存", formatByte(totalByte));//使用cpuInfo.put("使用", formatByte(totalByte - acaliableByte));//剩余内存cpuInfo.put("剩余内存", formatByte(acaliableByte));//使用率cpuInfo.put("使用率", new DecimalFormat("#.##%").format((totalByte - acaliableByte) * 1.0 / totalByte));System.out.println("系统内存信息 = " + cpuInfo);return cpuInfo;}/*** 系统盘符信息*/public static JSONArray getSysFileInfo() {JSONObject cpuInfo;JSONArray sysFiles = new JSONArray();FileSystem fileSystem = operatingSystem.getFileSystem();OSFileStore[] fsArray = fileSystem.getFileStores();for (OSFileStore fs : fsArray) {cpuInfo = new JSONObject();//盘符路径cpuInfo.put("盘符路径", fs.getMount());//盘符类型cpuInfo.put("盘符类型", fs.getType());//文件类型cpuInfo.put("文件类型", fs.getName());//总大小cpuInfo.put("总大小", formatByte(fs.getTotalSpace()));//剩余大小cpuInfo.put("剩余大小", formatByte(fs.getUsableSpace()));//已经使用量cpuInfo.put("已经使用量", formatByte(fs.getTotalSpace() - fs.getUsableSpace()));if (fs.getTotalSpace() == 0) {//资源的使用率cpuInfo.put("资源的使用率", 0);} else {cpuInfo.put("资源的使用率",new DecimalFormat("#.##%").format((fs.getTotalSpace() - fs.getUsableSpace()) * 1.0 / fs.getTotalSpace()));}sysFiles.add(cpuInfo);}System.out.println("系统盘符信息 = " + sysFiles);return sysFiles;}/*** 系统信息*/public static JSONObject getSysInfo() throws UnknownHostException {JSONObject cpuInfo = new JSONObject();Properties props = System.getProperties();//操作系统名cpuInfo.put("操作系统名", props.getProperty("os.name"));//系统架构cpuInfo.put("系统架构", props.getProperty("os.arch"));//服务器名称cpuInfo.put("服务器名称", InetAddress.getLocalHost().getHostName());//服务器IpcpuInfo.put("服务器Ip", InetAddress.getLocalHost().getHostAddress());//项目路径cpuInfo.put("项目路径", props.getProperty("user.dir"));System.out.println("系统信息 = " + cpuInfo);return cpuInfo;}/*** 所有系统信息*/public static JSONObject getInfo() throws UnknownHostException {JSONObject info = new JSONObject();info.put("CPU信息", getCpuInfo());info.put("系统jvm信息", getJvmInfo());info.put("系统内存信息", getMemInfo());info.put("系统信息", getSysInfo());info.put("系统盘符信息", getSysFileInfo());return info;}/*** 单位转换*/private static String formatByte(long byteNumber) {//换算单位double FORMAT = 1024.0;double kbNumber = byteNumber / FORMAT;if (kbNumber < FORMAT) {return new DecimalFormat("#.##KB").format(kbNumber);}double mbNumber = kbNumber / FORMAT;if (mbNumber < FORMAT) {return new DecimalFormat("#.##MB").format(mbNumber);}double gbNumber = mbNumber / FORMAT;if (gbNumber < FORMAT) {return new DecimalFormat("#.##GB").format(gbNumber);}double tbNumber = gbNumber / FORMAT;return new DecimalFormat("#.##TB").format(tbNumber);}
}

Msg:

package com.zwq.utils;import java.util.HashMap;
import java.util.Map;public class Msg {//自定义状态码private int code;//成功或失败 的提示信息private String msg;//用户要返回给浏览器的数据private Map<String, Object> content = new HashMap<String, Object>();//成功调用的方法---此处暂定 200为成功public static Msg success() {Msg msg = new Msg();msg.setCode(200);msg.setMsg("成功!");return msg;}//失败调用的方法---此处暂定 500为失败public static Msg fail() {Msg msg = new Msg();msg.setCode(500);msg.setMsg("失败!");return msg;}//添加数据public Msg add(String key, Object value) {this.getContent().put(key, value);return this;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Map<String, Object> getContent() {return content;}public void setContent(Map<String, Object> content) {this.content = content;}}

controller:

@RestController
public class ServerController {@GetMapping("/server")@ApiOperation(value = "获取系统信息")public Msg server() throws UnknownHostException {return Msg.success().add("server", SystemInfoUtils.getInfo());}
}

获取系统信息(oshi-core)相关推荐

  1. Golang实践录:获取系统信息

    本文介绍获取系统信息的方法,另外给出根据不同系统编译的方法. 问题提出 由于多年来接触了不同系统的兼容工程,对使用宏区分不同的代码一直有一种莫名的感觉.像 Linux 内核中就有很多这样的代码,cor ...

  2. Android Build类获取系统信息

    Build类中的常量列表 Build类可以用来获取Android系统的相关信息.Build类中定义了一系列的public static final的常量,和两个静态内部类(VERSION和VERSIO ...

  3. 跨平台 获取系统信息的python库 http://support.hyperic.com/disp

    跨平台 获取系统信息的python库 http://support.hyperic.com/disp - 张沈鹏,在路上... - ITeye技术网站 跨平台 获取系统信息的python库 http: ...

  4. Kettle使用_8 存储过程结合获取系统信息

    Kettle使用_8 存储过程结合获取系统信息 需求: 通过传递给kettle位置参数的方式执行存储过程.其中存储过程的需求是往tb_user(字段user_id, name)里插入一条记录(覆盖式, ...

  5. Kettle使用_3变量替换之获取系统信息与命名参数

    需求:SQL里定义动态的变量并能替换变量的值后将数据导入到文本文件中 解决方法:通过获取系统信息组件和SQL替换变量的参数来完成该功能 注: 可结合如下链接一起阅读: Kettle使用_29 转换里使 ...

  6. ansible获取linux信息,ansible 获取系统信息的一些范例,ansible系统信息

    ansible 获取系统信息的一些范例,ansible系统信息 主机名:echo `ansible 193.168.120.101 -m setup -a "filter=ansible_h ...

  7. Java 获取系统信息

    Java 获取系统信息可以用以下方法: public class testsysteminfo {public static void main(String[] args) {// TODO Aut ...

  8. java获取系统信息:java的信息、操作系统的信息、用户的信息、虚拟机的信息、系统设置的信息。

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java获取系统信息:java的信息.操作系统的信息.用户的信息.虚拟机的信息.系统设置的信息. package com.lp.app.windo ...

  9. 小程序开发API之获取系统信息wx.getSystemInfo()、wx.getSystemInfoSync()

    wx.getSystemInfo() 获取系统信息 函数参数: 返回值: 例如: 写法一 index.js /*brand 设备品牌 model 设备型号pixelRatio 设备像素比screenW ...

最新文章

  1. 发力企业云,用友是要掉队,还是进击?
  2. Gradle学习网站
  3. C语言分区排序partition sort 算法(附完整源码)
  4. 欢迎使用Augury[翻译]
  5. webp 格式转 png 格式的一种便捷方式
  6. python项目打包部署到ios_Python iOS 自动打包脚本(包含上传到fir)
  7. 【H5营销活动】近期捷微H5营销活动大盘点
  8. tidb mysql主从复制_如何配置MySQL数据库主从复制
  9. VMware中进行文件移动/复制权限不够的问题
  10. Guava: Joiner
  11. 计算机二级题库删去哪套,Word标题前出现黑块究竟要怎么删除
  12. java爬虫正则表达式_Java爬虫预热之正则表达式 - 菜鸟头头
  13. Abaqus应力结点数据导出与处理
  14. springboot~Integer和int如何选择,Integer的意义何在
  15. 神经网络(六)循环神经网络
  16. Pytorch中如何理解RNN LSTM GRU的input(重点理解seq_len / time_steps)
  17. (转)Native Extensions for Silverlight (NESL)?
  18. TextAnalysisTool.net -- 提高文本分析效率的小工具
  19. 香港《财资》2018年金融科技奖 金融壹账通、花旗银行、招商银行等登榜
  20. FC(nes)游戏开发资源

热门文章

  1. Linux shell编程学习
  2. 强联通分量,双联通分量详解
  3. 台式电脑键盘f1是计算机怎么取消,开机f1怎么取消|台式机怎么取消f1开机
  4. checkbox选中用法以及获取未选中的checkbox
  5. 互联网刮来的内容付费风,你会为内容买单吗?
  6. JAVA值传递还是引用传递?
  7. myeclipse2017下载安装 破解以及汉化
  8. ajax 怎么input赋值,jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签...
  9. YOLOv5+DeepSORT多目标跟踪深入解读与测试(含源码)
  10. mybatis 动态sql及参数传递