NodeJs-OS

 后端   小卒子   2024-09-06 10:14   125
  nodejs

Node.js 的 os 模块提供了与操作系统相关的实用功能,允许开发者获取操作系统信息以及与系统交互。通过 os 模块,开发者可以轻松获取平台类型、CPU 架构、内存信息、网络接口等系统信息。

本文将详细介绍 os 模块的所有属性、方法以及使用方式,涵盖它的所有相关功能。

1. 模块引入

os 是 Node.js 的内置模块,无需安装第三方库。只需通过 require('os') 即可使用。

const os = require('os');

2. 操作系统信息

2.1 os.arch()

该方法返回操作系统的 CPU 架构,通常是 x64armarm64ia32 等。

console.log(os.arch());  // 输出:x64

2.2 os.platform()

返回操作系统的平台名称。常见的返回值包括:linuxwin32darwin(macOS)。

console.log(os.platform());  // 输出:win32 (在 Windows 上)

2.3 os.type()

返回操作系统的类型,如 LinuxWindows_NTDarwin

console.log(os.type());  // 输出:Windows_NT

2.4 os.release()

返回操作系统的版本号。

console.log(os.release());  // 输出:10.0.19042 (在 Windows 10 上)

2.5 os.version()

返回 Node.js 编译时操作系统的版本号,通常比 os.release() 提供的版本更详细。

console.log(os.version());  // 输出:#59-Ubuntu SMP Wed Oct 28 19:55:39 UTC 2020 (在 Linux 上)

2.6 os.uptime()

返回操作系统的运行时间(以秒为单位)。

console.log(os.uptime());  // 输出:1234567 (秒数)

2.7 os.hostname()

返回操作系统的主机名。

console.log(os.hostname());  // 输出:MyComputer

3. 内存信息

3.1 os.totalmem()

返回系统总内存量,以字节为单位。

console.log(os.totalmem());  // 输出:8589934592 (即 8 GB)

3.2 os.freemem()

返回系统空闲内存量,以字节为单位。

console.log(os.freemem());  // 输出:2147483648 (即 2 GB)

4. CPU 信息

4.1 os.cpus()

返回关于每个逻辑 CPU 内核的信息,包括模型、速度(MHz)和每个 CPU 内核的时间(用户、空闲等)。

console.log(os.cpus());
/*
[
  {
    model: 'Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz',
    speed: 2808,
    times: { user: 123456789, nice: 0, sys: 12345678, idle: 123456789, irq: 0 }
  },
  // ...
]
*/

4.2 os.loadavg()

返回一个包含三个元素的数组,分别表示 1、5 和 15 分钟的平均负载。仅在 Unix 系统上有效,Windows 上此方法返回 [0, 0, 0]

console.log(os.loadavg());  // 输出:[0.25, 0.4, 0.5]

5. 网络接口信息

5.1 os.networkInterfaces()

返回一个包含已分配网络接口的对象。对象的键是网络接口的名称,值是包含有关地址、掩码、族别和 MAC 地址的信息。

console.log(os.networkInterfaces());
/*
{
  lo: [
    { address: '127.0.0.1', netmask: '255.0.0.0', family: 'IPv4', mac: '00:00:00:00:00:00', internal: true },
    { address: '::1', netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', family: 'IPv6', mac: '00:00:00:00:00:00', internal: true }
  ],
  eth0: [
    { address: '192.168.0.100', netmask: '255.255.255.0', family: 'IPv4', mac: '01:23:45:67:89:ab', internal: false }
  ]
}
*/

6. 其他方法

6.1 os.homedir()

返回当前用户的主目录路径。

console.log(os.homedir());  // 输出:C:\Users\MyUsername (在 Windows 上)

6.2 os.tmpdir()

返回操作系统的临时文件目录路径。

console.log(os.tmpdir());  // 输出:C:\Users\MyUsername\AppData\Local\Temp (在 Windows 上)

6.3 os.endianness()

返回操作系统的字节序列("BE" 或 "LE"),分别表示大端序和小端序。

console.log(os.endianness());  // 输出:LE (在大多数现代系统上)

6.4 os.userInfo()

返回包含当前用户信息的对象。包含用户名、主目录路径、shell 等信息。

console.log(os.userInfo());
/*
{
  uid: -1,
  gid: -1,
  username: 'MyUsername',
  homedir: 'C:\\Users\\MyUsername',
  shell: null  // 在 Windows 系统上
}
*/

7. 实验性 API

  • os.constants: 提供了一组操作系统错误代码和信号的常量。该属性仍是实验性 API,可能会在将来的 Node.js 版本中更改。
console.log(os.constants);
/*
{
  UV_UDP_REUSEADDR: 4,
  signals: {
    SIGHUP: 1, SIGINT: 2, SIGILL: 4, SIGABRT: 6, SIGFPE: 8,
    SIGKILL: 9, SIGSEGV: 11, SIGPIPE: 13, SIGALRM: 14, SIGTERM: 15,
    ...
  },
  errno: {
    E2BIG: 7, EACCES: 13, EADDRINUSE: 98, ...
  }
}
*/

8. 示例代码

获取系统基本信息

const os = require('os');

console.log('平台:', os.platform());
console.log('架构:', os.arch());
console.log('系统类型:', os.type());
console.log('版本:', os.release());
console.log('主机名:', os.hostname());
console.log('总内存:', os.totalmem());
console.log('可用内存:', os.freemem());
console.log('CPU 信息:', os.cpus());
console

.log('网络接口:', os.networkInterfaces());
console.log('用户信息:', os.userInfo());

获取系统运行时间和负载信息

const os = require('os');

console.log('系统运行时间 (秒):', os.uptime());
console.log('系统平均负载:', os.loadavg());

9. 总结

Node.js 的 os 模块为开发者提供了获取操作系统信息和系统交互的能力。无论是在进行性能监控、调试,还是需要根据系统条件作出不同的处理,os 模块都非常有用。通过本文的详细介绍,开发者可以灵活使用 os 模块的各种方法来获取和操作系统相关的信息。