现在位置: 首页 > Node.js 教程 > 正文

Node.js os 模块

Java FileNode.js 内置模块


Node.js 的 os 模块是一个内置的核心模块,提供了与操作系统相关的实用方法和属性。通过这个模块,我们可以获取关于当前运行 Node.js 的操作系统的各种信息,如 CPU 架构、内存使用情况、网络接口等。

为什么需要 os 模块

在开发应用程序时,有时我们需要根据不同的操作系统环境执行不同的操作,或者需要监控系统的资源使用情况。os 模块就为我们提供了这样的能力,让我们可以轻松地获取这些系统信息。


如何使用 os 模块

要使用 os 模块,首先需要引入它:

const os = require('os');

常用方法介绍

1. 获取操作系统信息

实例

console.log(os.platform());  // 返回操作系统平台,如 'darwin', 'win32', 'linux'
console.log(os.type());      // 返回操作系统名称,如 'Linux', 'Darwin', 'Windows_NT'
console.log(os.arch());      // 返回 CPU 架构,如 'x64', 'arm'
console.log(os.release());   // 返回操作系统版本

2. 获取内存信息

实例

console.log(os.totalmem());  // 返回系统总内存(字节)
console.log(os.freemem());   // 返回系统可用内存(字节)

// 转换为 MB 显示
console.log(`总内存: ${os.totalmem() / 1024 / 1024} MB`);
console.log(`可用内存: ${os.freemem() / 1024 / 1024} MB`);

3. 获取 CPU 信息

实例

console.log(os.cpus());      // 返回包含每个 CPU/核心信息的对象数组
console.log(os.loadavg());   // 返回 1, 5, 15 分钟的平均负载(仅 Linux/Unix)

// 获取 CPU 核心数
console.log(`CPU 核心数: ${os.cpus().length}`);

4. 获取网络接口信息

实例

console.log(os.networkInterfaces());  // 返回网络接口信息

5. 获取用户相关信息

实例

console.log(os.homedir());   // 返回当前用户的主目录
console.log(os.userInfo());  // 返回当前用户的信息
console.log(os.hostname());  // 返回操作系统的主机名

实际应用示例

示例 1:系统监控工具

实例

const os = require('os');

function systemMonitor() {
  console.log('=== 系统监控 ===');
  console.log(`操作系统: ${os.type()} ${os.release()}`);
  console.log(`CPU 架构: ${os.arch()}`);
  console.log(`CPU 核心数: ${os.cpus().length}`);
  console.log(`总内存: ${(os.totalmem() / 1024 / 1024).toFixed(2)} MB`);
  console.log(`可用内存: ${(os.freemem() / 1024 / 1024).toFixed(2)} MB`);
  console.log(`系统运行时间: ${(os.uptime() / 60 / 60).toFixed(2)} 小时`);
}

systemMonitor();

示例 2:获取网络 IP 地址

实例

const os = require('os');

function getLocalIP() {
  const interfaces = os.networkInterfaces();
  for (const interfaceName in interfaces) {
    for (const iface of interfaces[interfaceName]) {
      if (iface.family === 'IPv4' && !iface.internal) {
        return iface.address;
      }
    }
  }
  return '127.0.0.1';
}

console.log(`本机 IP 地址: ${getLocalIP()}`);

注意事项

  1. os 模块提供的信息是只读的,不能用于修改系统配置。
  2. 不同操作系统返回的信息可能有所不同,特别是 Windows 和 Unix-like 系统之间。
  3. 某些方法(如 loadavg())在 Windows 上可能不可用或返回不同的值。
  4. 内存信息以字节为单位返回,通常需要转换为更易读的单位(如 MB 或 GB)。

方法

os 常用方法及属性如下:

方法描述示例
os.arch()返回操作系统的 CPU 架构。console.log(os.arch()); // 输出:'x64'
os.constants返回包含操作系统特定常量的对象(如错误码、信号等)。console.log(os.constants.signals);
os.cpus()返回一个对象数组,每个对象包含 CPU 内核的信息,如型号、速度、使用情况等。console.log(os.cpus());
os.endianness()返回 CPU 的字节序(BE 表示大端字节序,LE 表示小端字节序)。console.log(os.endianness()); // 输出:'LE'
os.freemem()返回系统的空闲内存量(以字节为单位),可用于监控系统资源。console.log(os.freemem());
os.homedir()返回当前用户的主目录路径。console.log(os.homedir());
os.hostname()返回主机名。console.log(os.hostname());
os.loadavg()返回一个包含 1、5 和 15 分钟平均负载的数组,仅在 Unix 系统上有效。console.log(os.loadavg());
os.networkInterfaces()返回一个对象,包含每个网络接口的地址信息,如 IP 地址MAC 地址console.log(os.networkInterfaces());
os.platform()返回操作系统平台,如 'darwin''win32''linux' 等。console.log(os.platform());
os.release()返回操作系统的发行版本。console.log(os.release());
os.tmpdir()返回操作系统默认的临时文件目录路径。console.log(os.tmpdir());
os.totalmem()返回系统总内存量(以字节为单位)。console.log(os.totalmem());
os.type()返回操作系统的名称,如 'Linux''Darwin'(macOS)、'Windows_NT' 等。console.log(os.type());
os.uptime()返回操作系统运行时间,以秒为单位。console.log(os.uptime());
os.userInfo([options])返回当前用户的详细信息,如用户名、主目录、UID、GID 等。支持配置 options 对象,可设置字符编码(默认是 'utf8')。console.log(os.userInfo());

属性

属性描述示例
os.EOL返回当前操作系统的行尾标识符(\n\r\n),方便处理跨平台的文件读写。console.log(os.EOL); // Windows 输出:'\r\n',Linux 输出:'\n'

实例

创建 main.js 文件,代码如下所示:

实例

const os = require('os');

// 获取系统架构
console.log('系统架构:', os.arch());

// 获取 CPU 信息
console.log('CPU 信息:', os.cpus());

// 获取空闲内存
console.log('空闲内存:', os.freemem());

// 获取总内存
console.log('总内存:', os.totalmem());

// 获取主目录
console.log('主目录:', os.homedir());

// 获取系统平台
console.log('系统平台:', os.platform());

// 获取系统名称
console.log('系统名称:', os.type());

// 获取平均负载(仅适用于 Unix 系统)
console.log('平均负载:', os.loadavg());

// 获取网络接口信息
console.log('网络接口信息:', os.networkInterfaces());

代码执行结果类似如下:

系统架构: arm64
CPU 信息: [
  {
    model: 'Apple M1',
    speed: 24,
    times: { user: 18515240, nice: 0, sys: 9460280, idle: 38401220, irq: 0 }
  }
...
]
空闲内存: 167411712
总内存: 8589934592
主目录: /Users/RUNOOB
系统平台: darwin
系统名称: Darwin
平均负载: [ 11.4658203125, 4.49560546875, 3.35791015625 ]
网络接口信息: {
...

Node.js 工具模块Node.js 工具模块

Java FileNode.js 内置模块