systeminformation
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)
如果你需要一次性获取多个信息,可以使用这些预设好的组合函数:
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();
💡 小贴士
权限问题:某些函数(如
cpuTemperature和memLayout)在 Linux/macOS 上可能需要sudo权限,在 Windows 上可能需要管理员权限。性能:避免在极短的循环(如
ms级)中调用这些函数,因为读取系统底层接口是有开销的。