Node.js 的 os
模块提供了与操作系统相关的实用功能,允许开发者获取操作系统信息以及与系统交互。通过 os
模块,开发者可以轻松获取平台类型、CPU 架构、内存信息、网络接口等系统信息。
本文将详细介绍 os
模块的所有属性、方法以及使用方式,涵盖它的所有相关功能。
1. 模块引入
os
是 Node.js 的内置模块,无需安装第三方库。只需通过 require('os')
即可使用。
const os = require('os');
2. 操作系统信息
2.1 os.arch()
该方法返回操作系统的 CPU 架构,通常是 x64
、arm
、arm64
、ia32
等。
console.log(os.arch()); // 输出:x64
2.2 os.platform()
返回操作系统的平台名称。常见的返回值包括:linux
、win32
、darwin
(macOS)。
console.log(os.platform()); // 输出:win32 (在 Windows 上)
2.3 os.type()
返回操作系统的类型,如 Linux
、Windows_NT
或 Darwin
。
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
模块的各种方法来获取和操作系统相关的信息。