Node.js 中的 os 模块学习

Node.js 中的 os 模块学习

声明

本文由我个人参考Node.js官方文档撰写,未使用AI生成(除极少数地方外)。

os模块非常简单,提供了一些操作系统的信息。
没有什么值得学习的地方,AI时代这些纯记忆的东西交给AI就行。
我们需要做的是看懂如下代码和代码的运行结果。

import os from "node:os";

console.log("操作系统:", os.version());
console.log("内核类型:", os.type());
console.log("内核版本:", os.release());
console.log("CPU架构:", os.machine());
console.log("Node.js编译平台:", os.platform());
console.log("Node.js编译架构:", os.arch());
console.log("Node.js字节序:", os.endianness() === "LE" ? "小端序" : "大端序");
console.log("CPU信息:", os.cpus().at(0));
console.log("系统推荐的并行任务数量:", os.availableParallelism());
console.log("终止符:", os.EOL === "\n" ? "LF" : "CRLF");
console.log("内存总量:", (os.totalmem() / 1024 / 1024 / 1024).toFixed(2), "GB");
console.log("可用内存:", (os.freemem() / 1024 / 1024 / 1024).toFixed(2), "GB");
console.log("主机名:", os.hostname());
console.log("系统启动时间:", os.uptime(), "秒");
console.log("系统负载值:", os.loadavg());
console.log("用户信息", os.userInfo());
console.log("HOME目录:", os.homedir());
console.log("临时文件目录:", os.tmpdir());
console.log("空设备路径:", os.devNull);
console.log("当前进程优先级:", os.getPriority());

// 因为太长了这个先注释掉
// console.log("网络接口:",os.networkInterfaces());
// console.log("操作系统常量:",os.constants);

运行结果

这是在我的Ubuntu上的输出结果

cxx@springmorning:$ node main.mts 
操作系统: #24-Ubuntu SMP PREEMPT_DYNAMIC Sun Jun 15 11:18:07 UTC 2025
内核类型: Linux
内核版本: 6.14.0-24-generic
CPU架构: x86_64
Node.js编译平台: linux
Node.js编译架构: x64
Node.js字节序: 小端序
CPU信息: {
  model: '12th Gen Intel(R) Core(TM) i5-12450H',
  speed: 2199,
  times: { user: 148330, nice: 10, sys: 40440, idle: 1855270, irq: 0 }
}
系统推荐的并行任务数量: 12
终止符: LF
内存总量: 14.85 GB
可用内存: 9.69 GB
主机名: springmorning
系统启动时间: 2336.59 秒
系统负载值: [ 0.74, 0.8, 0.78 ]
用户信息 [Object: null prototype] {
  uid: 1000,
  gid: 1000,
  username: 'cxx',
  homedir: '/home/cxx',
  shell: '/bin/bash'
}
HOME目录: /home/cxx
临时文件目录: /tmp
空设备路径: /dev/null
当前进程优先级: 0

这是在我的Windows上的输出结果

操作系统: Windows 10 Home China
内核类型: Windows_NT
内核版本: 10.0.19045
CPU架构: x86_64
Node.js编译平台: win32
Node.js编译架构: x64
Node.js字节序: 小端序
CPU信息: {
  model: '13th Gen Intel(R) Core(TM) i7-13650HX',
  speed: 2803,
  times: { user: 5735671, nice: 0, sys: 1227953, idle: 56700093, irq: 48203 }
}
系统推荐的并行任务数量: 20
终止符: CRLF
内存总量: 15.63 GB
可用内存: 6.79 GB
主机名: DESKTOP-M5GOA1V
系统启动时间: 93604.015 秒
系统负载值: [ 0, 0, 0 ]
用户信息 [Object: null prototype] {
  uid: -1,
  gid: -1,
  username: 'cxx',
  homedir: 'C:\\Users\\cxx',
  shell: null
}
HOME目录: C:\Users\cxx
临时文件目录: C:\Users\cxx\AppData\Local\Temp
空设备路径: \\.\nul
当前进程优先级: 0

辨析

有一些很像的函数,简单说说

  • os.machine()os.arch()

os.machine()返回的是CPU架构,os.arch()返回的是Node.js的二进制文件架构。比如我电脑是x86_64的,但下载了32位的Node.js,那么os.machine()输出x86-64os.arch()输出ia32

  • os.version()os.type()os.release()os.platform()

    • os.version()返回的是用户友好的操作系统版本,类似uname -a
    • os.type()返回的是操作系统名,比如LinuxWindows_NTDarwin,类似uname -s
    • os.release()返回操作系统的发行版本号,简言之就是内核版本,类似uname -r
    • os.platform()返回的是Node.js编译时的操作系统平台,该值在编译Node.js时设置,如linuxwin32darwin
  • os.availableParallelism(),功能是返回程序应使用的默认并行度的估计值

设置进程优先级的函数

上述代码,我们还有一个函数没提到,是os.setPriority([pid, ]priority),功能是设置进程的优先级。
参数说明:

  • pid(可选):目标进程的 PID(进程 ID)。默认值为 0,表示当前进程。
  • priority(必需):优先级值,范围为 -20(最高)到 19(最低)。
    Node.js 提供了平台无关的优先级常量os.constants.priority,可以用来设置进程的优先级。
cxx@springmorning:$ node main.mts # 输出示例
[Object: null prototype] {
  PRIORITY_LOW: 19,
  PRIORITY_BELOW_NORMAL: 10,
  PRIORITY_NORMAL: 0,
  PRIORITY_ABOVE_NORMAL: -7,
  PRIORITY_HIGH: -14,
  PRIORITY_HIGHEST: -20
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值