Systeminformation 文档整理
概述
Systeminformation 是一个为 Node.js 提供系统和操作系统信息的库。此项目由 Sebastian Hildebrandt 开始,现在已包含超过 15,000 行代码,发布了 600 多个版本,每月下载量高达 800 万次,总下载量超过 2.2 亿次。它在 NPM 后端包中排名第一。
安装
可以通过以下命令安装该库:
npm install systeminformation --save
或更简单地:
npm i systeminformation
你也可以通过 npx
直接试用:
npx systeminformation info npx systeminformation
快速开始
Systeminformation 提供了 50 多个函数来获取详细的硬件、系统和操作系统信息,支持 Linux、macOS、部分 Windows、FreeBSD、OpenBSD、NetBSD、SunOS 和 Android,且没有 NPM 依赖。请注意,这是一个 Node.js 库,应该用于后端/服务器端,不适用于浏览器。
代码示例
const si = require('systeminformation'); // Promises 风格 si.cpu() .then(data => console.log(data)) .catch(error => console.error(error)); // Async/Await 风格 async function getCpuData() { try { const data = await si.cpu(); console.log(data); } catch (error) { console.error(error); } } getCpuData();
新版本和更新
版本 5.0
版本 5.0 带来了新的功能和改进,包括:
- 新增音频设备信息
- 新增蓝牙设备信息
- 新增 Docker 镜像和卷信息
- 新增打印机信息
- 新增 USB 控制器和设备信息
- 扩展 WiFi 接口和连接信息
- 改进的 UUID 获取功能
- 改进的 CPU 和系统信息检测
- 支持 Apple Silicon M1/M2/M3
- 更好的树莓派检测
功能参考
通用信息
si.version(); // 获取库版本 si.time(); // 获取当前时间、运行时间、时区等
系统信息
si.system().then(data => console.log(data)); // 获取硬件信息 si.bios().then(data => console.log(data)); // 获取BIOS信息 si.baseboard().then(data => console.log(data)); // 获取主板信息 si.chassis().then(data => console.log(data)); // 获取机箱信息
CPU 信息
si.cpu().then(data => console.log(data)); // 获取CPU信息 si.cpuFlags().then(data => console.log(data)); // 获取CPU标志 si.cpuCache().then(data => console.log(data)); // 获取CPU缓存 si.cpuCurrentSpeed().then(data => console.log(data)); // 获取当前CPU速度 si.cpuTemperature().then(data => console.log(data)); // 获取CPU温度
内存信息
si.mem().then(data => console.log(data)); // 获取内存信息 si.memLayout().then(data => console.log(data)); // 获取内存布局
电池信息
si.battery().then(data => console.log(data)); // 获取电池信息
图形信息
si.graphics().then(data => console.log(data)); // 获取图形控制器和显示器信息
操作系统信息
si.osInfo().then(data => console.log(data)); // 获取操作系统信息 si.uuid().then(data => console.log(data)); // 获取UUID si.versions().then(data => console.log(data)); // 获取版本信息 si.shell().then(data => console.log(data)); // 获取默认shell si.users().then(data => console.log(data)); // 获取在线用户信息
当前负载、进程和服务
si.currentLoad().then(data => console.log(data)); // 获取CPU负载 si.fullLoad().then(data => console.log(data)); // 获取自启动以来的CPU负载 si.processes().then(data => console.log(data)); // 获取运行中的进程信息 si.services('mysql, apache2').then(data => console.log(data)); // 获取指定服务信息 si.processLoad('mysql, apache2').then(data => console.log(data)); // 获取指定进程负载
文件系统信息
si.diskLayout().then(data => console.log(data)); // 获取物理磁盘布局 si.blockDevices().then(data => console.log(data)); // 获取磁盘、分区和RAID信息 si.disksIO().then(data => console.log(data)); // 获取当前传输统计信息 si.fsSize().then(data => console.log(data)); // 获取挂载文件系统信息 si.fsOpenFiles().then(data => console.log(data)); // 获取打开文件数 si.fsStats().then(data => console.log(data)); // 获取文件系统统计信息
USB 信息
si.usb().then(data => console.log(data)); // 获取USB设备信息
打印机信息
si.printer().then(data => console.log(data)); // 获取打印机信息
音频信息
si.audio().then(data => console.log(data)); // 获取音频设备信息
网络信息
si.networkInterfaces().then(data => console.log(data)); // 获取网络接口信息 si.networkInterfaceDefault().then(data => console.log(data)); // 获取默认网络接口 si.networkGatewayDefault().then(data => console.log(data)); // 获取默认网关 si.networkStats().then(data => console.log(data)); // 获取当前网络统计信息 si.networkConnections().then(data => console.log(data)); // 获取当前网络连接 si.inetChecksite('https://example.com').then(data => console.log(data)); // 检查网站响应时间 si.inetLatency('8.8.8.8').then(data => console.log(data)); // 检查到外部资源的响应时间
WiFi 信息
si.wifiNetworks().then(data => console.log(data)); // 获取可用WiFi网络信息 si.wifiInterfaces().then(data => console.log(data)); // 获取WiFi接口信息 si.wifiConnections().then(data => console.log(data)); // 获取当前WiFi连接信息
蓝牙信息
si.bluetoothDevices().then(data => console.log(data)); // 获取蓝牙设备信息
Docker 信息
si.dockerInfo().then(data => console.log(data)); // 获取Docker信息 si.dockerImages().then(data => console.log(data)); // 获取Docker镜像信息 si.dockerContainers().then(data => console.log(data)); // 获取Docker容器信息 si.dockerContainerStats().then(data => console.log(data)); // 获取Docker容器统计信息 si.dockerContainerProcesses().then(data => console.log(data)); // 获取Docker容器内进程信息 si.dockerVolumes().then(data => console.log(data)); // 获取Docker卷信息 si.dockerAll().then(data => console.log(data)); // 获取所有Docker信息
虚拟机信息
si.vboxInfo().then(data => console.log(data)); // 获取VirtualBox信息
已知问题
macOS 温度传感器
为了能够在 macOS 上测量温度,创建了一个额外的包 osx-temperature-sensor
。默认情况下,该包不会安装,需要手动安装:
npm install osx-temperature-sensor --save
然后调用 cpuTemperature()
函数时将检测该库并返回温度值。
Windows 温度和电池信息
使用 get-WmiObject
可能需要管理员权限。如果没有返回值,请以管理员权限重新运行。如果仍无返回值,可能系统不支持此功能。
Linux 温度
某些情况下需要安装 Linux 传感器包,如在 DEBIAN 系统上运行:
sudo apt-get install lm-sensors
Linux S.M.A.R.T 状态
需要安装 smartmontools
来检测 S.M.A.R.T 状态,如在 DEBIAN 系统上运行:
sudo apt-get install smartmontools
Windows 编码问题
所有 Windows 函数已重新实现以避免编码问题。Windows 11 移除了 wmic
支持,需要使用 PowerShell,确保 PowerShell 版本 5 及以上已安装。
版权和许可
此库采用 MIT 许可证。更多详细信息,请参阅 LICENSE 文件。
作者和贡献者
此项目由 Sebastian Hildebrandt 编写。感谢所有贡献者的努力。
支持此项目
如果你喜欢这个项目,可以通过 Buy Me a Coffee 支持作者。