Systeminformation 文档整理

128 min read

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 支持作者。

资源