systeminformation 是 Node.js 中最强大的系统信息采集库之一。由于它包含的函数非常多(超过 150 个),通常将其分为几大核心类别。

该库绝大多数函数都是异步(Promise)的,你可以使用 await.then() 来调用。


1. 核心分类与常用函数

🖥️ 系统与硬件 (System & Hardware)

获取设备的基础物理信息。

  • system(): 制造商、型号、序列号等。

  • bios(): BIOS 版本及发布日期。

  • baseboard(): 主板相关信息。

  • chassis(): 机箱类型。

🧠 CPU (Processor)

  • cpu(): 核心数、制造商、型号、速度、缓存等。

  • cpuFlags(): CPU 支持的指令集(如 vmx, aes, avx)。

  • cpuCache(): L1, L2, L3 缓存详情。

  • cpuCurrentSpeed(): 实时主频(各核心独立)。

  • cpuTemperature(): 核心温度(需要特定系统权限)。

📟 内存 (Memory)

  • mem(): 总内存、已用、空闲、缓存、交换分区等。

  • memLayout(): 物理内存条详情(规格、插槽、时钟频率)。

🔋 电池与图形 (Battery & Graphics)

  • battery(): 电量、状态、设计容量。

  • graphics(): 显卡 (GPU) 型号、显存、显示器分辨率。

💾 存储 (Storage)

  • diskLayout(): 物理硬盘详情(型号、接口类型、尺寸)。

  • blockDevices(): 磁盘分区、挂载点、序列号。

  • fsSize(): 文件系统占用情况(磁盘已用百分比)。

  • fsStats(): 磁盘当前的 IO 读写速度。

🌐 网络 (Network)

  • networkInterfaces(): 网卡列表、IP、MAC 地址。

  • networkInterfaceDefault(): 获取默认网卡。

  • networkStats(iface): 实时上行/下行流量速度。

  • networkConnections(): 当前活动的 TCP/UDP 连接。

⚙️ 操作系统与进程 (OS & Processes)

  • osInfo(): 操作系统版本、内核、发行版名称。

  • shell(): 默认 Shell 路径。

  • versions(): 各种库的版本(Node, V8, SSL, Docker)。

  • processes(): 进程总数、运行状态分布。

  • processLoad(name): 特定进程的资源占用。


2. 快捷组合函数 (Quick Combos)

如果你需要一次性获取多个信息,可以使用这些预设好的组合函数:

函数名

获取内容

getStaticData()

几乎所有硬件信息(不随时间变化的静态数据)

getDynamicData()

几乎所有动态信息(负载、内存、网络流量)

getAllData()

包含以上所有数据(慎用,执行较慢)


3. 代码示例

使用 systeminformation 获取 CPU 和内存的典型写法:

JavaScript

import si from 'systeminformation';

async function getSpecs() {
  try {
    // 1. 获取 CPU 静态信息
    const cpu = await si.cpu();
    console.log(`型号: ${cpu.manufacturer} ${cpu.brand}`);

    // 2. 获取实时内存
    const mem = await si.mem();
    console.log(`已用内存: ${(mem.active / 1024 / 1024 / 1024).toFixed(2)} GB`);

    // 3. 获取实时 CPU 负载
    const currentLoad = await si.currentLoad();
    console.log(`当前负载: ${currentLoad.currentLoad.toFixed(2)}%`);

  } catch (e) {
    console.error(e);
  }
}

getSpecs();

💡 小贴士

  • 权限问题:某些函数(如 cpuTemperaturememLayout)在 Linux/macOS 上可能需要 sudo 权限,在 Windows 上可能需要管理员权限。

  • 性能:避免在极短的循环(如 ms 级)中调用这些函数,因为读取系统底层接口是有开销的。