如何快速掌握 systeminformation:50+系统信息获取函数的终极指南

如何快速掌握 systeminformation:50+系统信息获取函数的终极指南 🚀

【免费下载链接】systeminformation System Information Library for Node.JS 【免费下载链接】systeminformation 项目地址: https://gitcode.com/gh_mirrors/sy/systeminformation

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 功能覆盖示意图
图: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 开始! 🚀

【免费下载链接】systeminformation System Information Library for Node.JS 【免费下载链接】systeminformation 项目地址: https://gitcode.com/gh_mirrors/sy/systeminformation

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值