如何快速掌握 systeminformation:50+系统信息获取函数的终极指南 🚀
systeminformation 是一个轻量级的 Node.js 库,提供 50 多种函数来获取详尽的硬件、系统和操作系统信息。它支持 Linux、macOS、部分 Windows 等多平台,零 npm 依赖,适用于 Node.js、Bun 和 Deno 环境,是系统监控、运维自动化和软件兼容性检查的理想工具。
📌 为什么选择 systeminformation?核心优势解析
✅ 简单易用,零依赖负担
无需复杂配置,一行命令即可安装。作为独立库,它不依赖任何 npm 包,避免版本冲突和冗余依赖,让你的项目保持轻盈高效。
✅ 全面覆盖系统信息维度
从 CPU、内存、磁盘到网络、Docker、进程,几乎涵盖所有关键系统指标:
- 硬件信息:CPU 型号/速度/温度、内存容量/使用率、电池状态、USB 设备列表
- 系统状态:当前负载、进程列表、服务运行状态、文件系统挂载点
- 网络数据:IP 配置、带宽使用、WiFi 信号强度、蓝牙设备信息
- 虚拟化支持:Docker 容器状态、VirtualBox 虚拟机检测
✅ 跨平台兼容性
完美支持 Linux/macOS 全功能,部分支持 Windows/FreeBSD/OpenBSD/NetBSD/SunOS,甚至可在 Android 设备上运行,满足多场景开发需求。

图:systeminformation 可获取的核心系统信息维度(CPU 监控示例)
🚀 5 分钟上手:从安装到获取第一份系统报告
1️⃣ 极速安装步骤
打开终端,执行以下命令:
npm install systeminformation --save
或直接使用 npx 快速体验(无需安装):
npx systeminformation
2️⃣ 第一个程序:获取 CPU 核心数据
创建 system-info.js 文件,输入以下代码:
const si = require('systeminformation');
// 使用 Async/Await 风格(推荐 Node.js 7.6+)
async function getCpuInfo() {
try {
const cpuData = await si.cpu();
console.log('🔍 CPU 核心信息:');
console.log(`- 品牌型号:${cpuData.brand}`);
console.log(`- 物理核心数:${cpuData.physicalCores}`);
console.log(`- 最大频率:${cpuData.speedMax} GHz`);
console.log(`- 缓存大小:L3 ${cpuData.cache.l3 / 1024 / 1024} MB`);
} catch (error) {
console.error('❌ 获取信息失败:', error);
}
}
getCpuInfo();
运行程序:
node system-info.js
你将看到类似以下输出:
🔍 CPU 核心信息:
- 品牌型号:Intel(R) Core(TM) i7-10700K
- 物理核心数:8
- 最大频率:5.1 GHz
- 缓存大小:L3 16 MB
3️⃣ 三种调用方式任选
根据项目风格选择最合适的异步编程模式:
🔹 回调函数风格(传统方式)
si.memory((data) => {
console.log('内存总量:', data.total / 1024 / 1024 / 1024, 'GB');
});
🔹 Promise 链式调用
si.diskLayout()
.then(data => console.log('磁盘布局:', data))
.catch(error => console.error('错误:', error));
🔹 Async/Await 同步式写法(推荐)
如上文示例,代码更简洁易读,错误处理更直观。
💡 实战场景:3 个高频应用案例
🔍 案例 1:实时系统监控仪表盘
结合定时任务,每 5 秒刷新系统状态:
// 每 5 秒获取一次 CPU 使用率和内存占用
setInterval(async () => {
const [cpuLoad, mem] = await Promise.all([
si.currentLoad(),
si.mem()
]);
console.log(`📊 CPU 使用率:${cpuLoad.currentLoad.toFixed(1)}% | 内存使用率:${mem.usedPercent.toFixed(1)}%`);
}, 5000);
🔧 案例 2:运维自动化:磁盘空间预警
当磁盘使用率超过 85% 时发送警报:
async function checkDiskSpace() {
const fsSize = await si.fsSize();
for (const disk of fsSize) {
if (disk.use > 85) {
console.warn(`⚠️ 警告:${disk.mount} 分区使用率达 ${disk.use}%`);
// 可在此处添加邮件/短信通知逻辑
}
}
}
checkDiskSpace();
📱 案例 3:软件兼容性检查
根据用户 CPU 架构提供对应安装包:
async function getCompatiblePackage() {
const cpu = await si.cpu();
const is64Bit = cpu.flags.includes('x86_64') || cpu.flags.includes('arm64');
console.log(`推荐安装包:${is64Bit ? '64位版本' : '32位版本'}`);
}
getCompatiblePackage();
🛠️ 高级技巧:提升信息获取效率的 3 个秘诀
1️⃣ 按需查询,减少性能损耗
避免一次性调用 si.getAll()(会获取所有信息,耗时约 30 秒),而是针对性调用所需函数:
// 只获取网络相关信息(高效)
const networkInfo = await si.networkInterfaces();
2️⃣ 错误处理最佳实践
对可能失败的操作(如温度传感器)添加降级处理:
async function getCpuTemperature() {
try {
const temp = await si.cpuTemperature();
return temp.main; // 主温度
} catch (error) {
console.log('⚠️ 温度传感器不支持,返回默认值');
return null; // 或返回安全默认值
}
}
3️⃣ 结合 TypeScript 使用(类型安全)
通过 index.d.ts 获得完整类型提示(已内置):
import si from 'systeminformation';
async function getOsInfo(): Promise<string> {
const os = await si.osInfo();
return `${os.distro} ${os.release}`; // 类型自动提示
}
📚 核心功能速查表
| 信息类别 | 关键函数 | 用途示例 |
|---|---|---|
| CPU 信息 | si.cpu(), si.cpuTemperature() | 获取型号、核心数、实时温度 |
| 内存监控 | si.mem(), si.memLayout() | 总内存、插槽信息、使用率 |
| 磁盘信息 | si.diskLayout(), si.fsSize() | 硬盘型号、分区大小、使用率 |
| 网络状态 | si.networkInterfaces(), si.networkStats() | IP 配置、实时网速 |
| 进程管理 | si.processes(), si.currentLoad() | 进程列表、CPU 负载 |
| Docker 监控 | si.dockerInfo(), si.dockerContainers() | 容器状态、资源占用 |
完整函数文档可查看项目官方文档:docs/index.html
❗ 常见问题与解决方案
🐧 Linux 温度传感器问题
若温度返回为空,需安装依赖:
# Debian/Ubuntu
sudo apt-get install lm-sensors
sudo sensors-detect # 检测传感器
🍎 macOS 兼容性
获取温度需额外安装:
npm install osx-temperature-sensor --save
🖥️ Windows 权限问题
部分功能(如电池状态)需以管理员身份运行终端。
🔄 版本更新与生态集成
systeminformation 目前已更新至 Version 5,带来以下新特性:
- 新增 Docker 容器详细监控
- 优化内存使用效率,降低 30% 资源占用
- 支持 Apple Silicon M1/M2 芯片温度检测
典型生态组合
- 监控可视化:结合 Grafana 展示系统仪表盘
- 告警系统:集成 Prometheus 实现阈值报警
- 容器管理:与 Kubernetes API 联动监控节点状态
🎯 总结:为什么它是系统信息获取的首选工具?
systeminformation 凭借 零依赖、全功能、跨平台 的特性,已成为 Node.js 生态中系统信息获取的事实标准库。无论是个人项目的简单监控需求,还是企业级应用的复杂运维系统,它都能提供稳定高效的数据支持。
立即通过以下命令开始你的系统监控之旅:
npm install systeminformation
或访问项目仓库获取最新代码:
git clone https://gitcode.com/gh_mirrors/sy/systeminformation
让系统信息获取变得简单而强大,从 systeminformation 开始! 🚀
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



