OSHI 是一个免费的基于 JNA(本机)的 Java 操作系统和硬件信息库。它不需要安装任何额外的本地库,旨在提供跨平台实现来检索系统信息,例如操作系统版本、进程、内存和 CPU 使用率、磁盘和分区、设备、传感器等。

支持的平台

Windows • Linux • macOS • Unix(AIX、FreeBSD、OpenBSD、Solaris)

下载和依赖管理

稳定版

  • JDK8:oshi -core-6.1.6
  • JPMS:oshi -core-java11-6.1.6
  • JDK6:oshi-core-3.14.0

当前开发 (SNAPSHOT) 下载

  • JDK8:oshi -core-6.1.7-SNAPSHOT
  • JPMS:oshi-core-java11-6.1.7-SNAPSHOT

文档

  • API (javadocs)
  • FAQ
  • 更改日志
  • 性能注意事项
  • 主要版本的重大变化
  • 样本输出
  • 使用 OSHI 的应用程序和项目

用法

  1. 在您的类路径中包含 OSHI 及其依赖项。我们强烈建议您将 OSHI 作为依赖项添加到项目依赖项管理器(例如 Maven 或 Gradle)中。
  2. 创建一个新的实例SystemInfo
  3. 使用 getter fromSystemInfo访问硬件或操作系统组件,例如:
<span style="color:#333333"><span style="background-color:#f5f5f5"><code class="language-java"><span style="color:#660066">SystemInfo</span><span style="color:#000000"> si </span><span style="color:#666600">=</span> <span style="color:#000088">new</span> <span style="color:#660066">SystemInfo</span><span style="color:#666600">();</span>
<span style="color:#660066">HardwareAbstractionLayer</span><span style="color:#000000"> hal </span><span style="color:#666600">=</span><span style="color:#000000"> si</span><span style="color:#666600">.</span><span style="color:#000000">getHardware</span><span style="color:#666600">();</span>
<span style="color:#660066">CentralProcessor</span><span style="color:#000000"> cpu </span><span style="color:#666600">=</span><span style="color:#000000"> hal</span><span style="color:#666600">.</span><span style="color:#000000">getProcessor</span><span style="color:#666600">();</span></code></span></span>

有关示例,请参见SystemInfoTest.java。要查看您的机器的示例输出:

<span style="color:#333333"><span style="background-color:#f5f5f5"><code class="language-sh"><span style="color:#000000">git clone https</span><span style="color:#666600">://</span><span style="color:#000000">github</span><span style="color:#666600">.</span><span style="color:#000000">com</span><span style="color:#666600">/</span><span style="color:#000000">oshi</span><span style="color:#666600">/</span><span style="color:#000000">oshi</span><span style="color:#666600">.</span><span style="color:#000000">git </span><span style="color:#666600">&&</span><span style="color:#000000"> cd oshi</span><span style="color:#666600">./</span><span style="color:#000000">mvnw test</span><span style="color:#666600">-</span><span style="color:#000000">compile </span><span style="color:#666600">-</span><span style="color:#000000">pl oshi</span><span style="color:#666600">-</span><span style="color:#000000">core exec</span><span style="color:#666600">:</span><span style="color:#000000">java \</span><span style="color:#666600">-</span><span style="color:#660066">Dexec</span><span style="color:#666600">.</span><span style="color:#000000">mainClass</span><span style="color:#666600">=</span><span style="color:#008800">"oshi.SystemInfoTest"</span><span style="color:#000000"> \</span><span style="color:#666600">-</span><span style="color:#660066">Dexec</span><span style="color:#666600">.</span><span style="color:#000000">classpathScope</span><span style="color:#666600">=</span><span style="color:#008800">"test"</span></code></span></span>

一些设置可以在oshi.properties文件中配置,也可以使用GlobalConfig类进行操作。这应该在启动时完成,因为配置不是线程安全的,并且 OSHI 不保证在操作期间重新读取配置。

oshi-demo工件包括几个使用 OSHI 获取信息的概念验证示例,包括基本的 Swing GUI。

支持的功能

  • 计算机系统和固件、基板
  • 操作系统和版本/构建
  • 物理(核心)和逻辑(超线程)CPU、处理器组、NUMA 节点
  • 系统和每处理器负载、使用滴答计数器、中断、正常运行时间
  • 进程正常运行时间、CPU、内存使用情况、用户/组、命令行参数、线程详细信息
  • 使用/可用的物理和虚拟内存
  • 挂载的文件系统(类型、可用空间和总空间、选项、读写)
  • 磁盘驱动器(型号、序列号、大小、读取和写入)和分区
  • 网络接口(IP、带宽输入/输出)、网络参数、TCP/UDP 统计
  • 电池状态(容量百分比、剩余时间、用电量统计信息)
  • USB 设备
  • 连接的显示器(带有 EDID 信息)、显卡和声卡
  • 某些硬件上的传感器(温度、风扇速度、电压)

OSHI 的示例输出

OSHI 直接通过 Java 方法为其每个接口提供输出。通过定期轮询动态信息(例如,每秒),用户可以计算和跟踪变化。

系统信息测试

您可以通过克隆项目并使用Maven构建它来查看更多示例并运行SystemInfoTest 并查看系统的完整输出。

oshi-演示

此外,该oshi-demo模块包括一个OshiGui类,它实现了一个基本的 Swing GUI,为在 UI、监控或警报应用程序中使用 OSHI 的潜在可视化提供建议,如下所示。有关基于此方法的更高级 GUI,请参阅MooInfo 项目。

输出

有关操作系统和计算机系统硬件的一般信息:

通过测量时间间隔之间的滴答声(user、nice、system、idle、iowait 和 irq),可以计算出使用百分比。还提供了每个处理器的信息。

进程信息包括每个进程的 CPU 和内存可用。

内存和交换文件信息可用。

提供了系统电池的统计信息:

Power Sources:Name: InternalBattery-0, Device Name: bq20z451,RemainingCapacityPercent: 100.0%, Time Remaining: 5:42, Time Remaining Instant: 5:42,Power Usage Rate: -16045.216mW, Voltage: 12.694V, Amperage: -1264.0mA,Power OnLine: false, Charging: false, Discharging: true,Capacity Units: MAH, Current Capacity: 7213, Max Capacity: 7315, Design Capacity: 7336,Cycle Count: 6, Chemistry: LIon, Manufacture Date: 2019-06-11, Manufacturer: SMP,SerialNumber: D869243A2U3J65JAB, Temperature: 30.46°C

提供了每个显示器的 EDID。这可以用各种实用程序解析以获取详细信息。OSHI 提供所选数据的摘要。

Displays:Display 0:Manuf. ID=SAM, Product ID=2ad, Analog, Serial=HA19, ManufDate=3/2008, EDID v1.341 x 27 cm (16.1 x 10.6 in)Preferred Timing: Clock 106MHz, Active Pixels 3840x2880Range Limits: Field Rate 56-75 Hz vertical, 30-81 Hz horizontal, Max clock: 140 MHzMonitor Name: SyncMasterSerial Number: H9FQ345476Display 1:Manuf. ID=SAM, Product ID=226, Analog, Serial=HA19, ManufDate=4/2007, EDID v1.341 x 26 cm (16.1 x 10.2 in)Preferred Timing: Clock 106MHz, Active Pixels 3840x2880Range Limits: Field Rate 56-75 Hz vertical, 30-81 Hz horizontal, Max clock: 140 MHzMonitor Name: SyncMasterSerial Number: HMCP431880

显示磁盘和使用情况(读取、写入、传输时间),并且可以将分区映射到文件系统。

Disks:disk0: (model: SanDisk Ultra II 960GB - S/N: 161008800550) size: 960.2 GB, reads: 1053132 (23.0 GiB), writes: 243792 (11.1 GiB), xfer: 73424854 ms|-- disk0s1: EFI (EFI System Partition) Maj:Min=1:1, size: 209.7 MB|-- disk0s2: Macintosh HD (Macintosh SSD) Maj:Min=1:2, size: 959.3 GB @ /disk1: (model: Disk Image - S/N: ) size: 960.0 GB, reads: 3678 (60.0 MiB), writes: 281 (8.6 MiB), xfer: 213627 ms|-- disk1s1: EFI (EFI System Partition) Maj:Min=1:4, size: 209.7 MB|-- disk1s2: Dropbox (disk image) Maj:Min=1:5, size: 959.7 GB @ /Volumes/Dropbox

传感器读数可用于某些硬件(请参阅API中的注释)。

Sensors:CPU Temperature: 69.8°CFan Speeds:[4685, 4687]CPU Voltage: 3.9V

可以列出连接的 USB 设备:

USB Devices:AppleUSBEHCI|-- Root Hub Simulation Simulation (Apple Inc.)|-- IOUSBHostDevice|-- IR Receiver (Apple Computer, Inc.)|-- USB Receiver (Logitech)AppleUSBEHCI|-- Root Hub Simulation Simulation (Apple Inc.)|-- FaceTime HD Camera (Built-in) (Apple Inc.) [s/n: DJHB1V077FDH5HL0]|-- IOUSBHostDevice|-- Apple Internal Keyboard / Trackpad (Apple Inc.)|-- BRCM2070 Hub (Apple Inc.)|-- Bluetooth USB Host Controller (Apple Inc.)AppleUSBEHCI|-- Root Hub Simulation Simulation (Apple Inc.)|-- IOUSBHostDevice|-- Apple Thunderbolt Display (Apple Inc.) [s/n: 162C0C25]|-- Display Audio (Apple Inc.) [s/n: 162C0C25]|-- FaceTime HD Camera (Display) (Apple Inc.) [s/n: CCGCAN000TDJ7DFX]|-- USB2.0 Hub|-- ANT USBStick2 (Dynastream Innovations) [s/n: 051]|-- Fitbit Base Station (Fitbit Inc.)

https://github.com/oshi/oshihttps://github.com/oshi/oshi

OSHI 是一个免费的基于 JNA(本机)的 Java 操作系统和硬件信息库相关推荐

  1. 国外一个免费的基于Java的PLC梯形图逻辑编辑与仿真软件

    TRiLOGI 乃是一个可编程序控制器 (PLC) 最常使用的梯形图逻辑编辑与仿真软件. TRiLOGI 6.0 原本是用来编写我 公司 (TRi)所生产的  M- 系列 PLC, 然而其内置的仿真器 ...

  2. 多伦多到温莎_我想要freeCodeCamp Toronto的Twitter来发布报价,所以我做了一个免费的bot来做到这一点。...

    多伦多到温莎 If you read About time, you'll know that I'm a big believer in spending time now on building ...

  3. 【折腾的一个小玩意】基于jquery+百度音乐的音乐外链小工具

    [折腾的一个小玩意]基于jquery+百度音乐的音乐外链小工具 现在百度mp3好像关掉了,虾米的加载又慢,于是我就根据以前发过的百度音乐的代码弄了这个东西.代码托管到百度BAE的,应用还在审核中,不知 ...

  4. 基于JNA(Java Native Access)实现RFID单卡、多卡读取以及写入。

    前言 在对RFID等硬件操作中,会使用C或C++进行实现,但如果是基于Java环境进行开发,就会和C++.C进行交互,调用底层的一些方法.在JNA出现之前,使用JNI会存在封装性不好.不稳定等问题. ...

  5. # 独立开发变现周刊(第57期):开发一个免费照片编辑器,一个人每月收入10万美元...

    分享独立开发.产品变现相关内容,每周五发布. 目录 1.Raindrop: 一站式书签管理工具 2.NotionPet: 嵌入式小组件库 3.Gummysearch: 在Reddit上发现目标用户的机 ...

  6. afterlogic 7.0.1 php,免费webmail 7.0.1(after logic 最后一个免费版本)

    [实例简介] AfterLogic WebMail 是一个基于浏览器Web Email客户端,可以很是便利的和现有的消息体系(邮件体系)集成. 应用AfterLogic WebMail Pro , 应 ...

  7. uIP 一个免费的TCP/IP栈

    uIP 一个免费的TCP/IP栈 原文:Adam Dunkels adam@dunkels.com 2002年2月15日 翻译:张伟林   2003年5月17日 okelinchang@163.com ...

  8. 卡牌类手游源码 刀塔传奇 免费分享 基于cocos2d-x3.0引擎开发

    卡牌类手游源码 刀塔传奇 免费分享 基于cocos2d-x3.0引擎开发 https://bbs.wxrym.com/thread-90118-1-1.html (出处: 外星人源码论坛) 今天给大家 ...

  9. 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门

    喜欢写Blog的人,会经历三个阶段. 第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写. 第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客. 第三阶段,觉得独立博客的管 ...

  10. 一个免费分享绘图代码的网站

    最近逛论坛发现了很多大神推荐一个免费分享绘图代码的网站https://www.r-graph-gallery.com/,不看不知道,一看吓一跳,里面果真提供许多分析中所涉及到的图形绘制方法,其中包含了 ...

最新文章

  1. linux中w命令参数详解
  2. 服务器管理安全(上)
  3. linux新终端找回任务,Linux 终端任务后台执行
  4. MongoDB 谨防索引seek的效率问题【华为云技术分享】
  5. 下列哪个适合做链栈_外贸企业如何做Google推广?自然排名和付费广告哪个更适合你?...
  6. win10禁用计算机维护,win10哪些服务可以禁用 服务哪些可以禁止启动
  7. ffmpeg 解码b帧_ffmpeg 解码h264数据丢帧
  8. 一段关于中国人口老龄化的评论
  9. paip.多线程调用静态方法错乱的解决
  10. 转贴 30岁你会站在哪?
  11. 自动更新纯真IP数据库
  12. 【论文解读 KDD 2018 | HEER】Easing Embedding Learning by Comprehensive Transcription of HIN
  13. 中国电信上海电信光猫路由器设置和外接路由器
  14. 宠物收养所(c++)
  15. nslookup查询域名系统服务器,域名解析系统DNS诊断命令nslookup详解
  16. Windows系统本地搭建DedeCMS网站教程
  17. 港交所2012交易日列表
  18. STM32 HAL库 CUBEMX FPU 和 DSP库
  19. 详述numpy中的np.random.rand()、np.random.randn()、np.random.randint()、np.random.uniform()函数的用法
  20. C# DirectInput游戏手柄和键盘开发心得2(SharpDX版)

热门文章

  1. uml分析考勤系统设计
  2. linux下安装php+apache+mysql集成环境
  3. NTP服务器的相关配置
  4. 地产行业主数据建设项目思考
  5. mapboxgl 互联网地图纠偏插件(三)
  6. python调用java之启动jpype
  7. Verilog常用语法
  8. 根据经纬度算距离 | SQL
  9. 关于PC电脑微信进粉计数器的选择?
  10. 【知易行难】RS485组网连接示意图