Nodejs 第十三章 OS

Node.js 中的 os 模块提供了一系列操作系统相关的实用工具函数。能够直接从Node.js应用程序中查询底层操作系统的信息和使用操作系统相关的功能。由于它是Node.js的核心模块,因此无需安装,直接引入就能用

js 复制代码
const os = require("os")

os 模块能做什么

  1. 获取操作系统的基本信息
    • 如当前登录用户、操作系统类型、系统架构、主机名、系统运行时间等。
  2. 查询CPU信息
    • 如CPU的型号、速度、核心数以及每个CPU核心的负载信息。
  3. 查询内存信息
    • 如系统的总内存、空闲内存等。
  4. 网络接口信息
    • 获取网络接口的详细信息,如IPv4和IPv6地址、MAC地址等。

常用的 os 模块方法

os.platform

  • 返回一个字符串,标识Node.js进程运行其上的操作系统平台(如'darwin''win32''linux'等)。
    • 像我电脑是Windows系统,返回的就是win32。如果是苹果(Mac)的话,会返回darwin。而Linux直接返回Linux本身
  • 全部的返回选项是非常多的,我们直接点进去platform能够看到

os.release

  • 获取操作系统版本

os.type

  • 返回操作系统的名字(如 'Linux''Darwin'(macOS的内核名称)、'Windows_NT'等)。

os.version

  • 输出当前系统的版本,比如像我输出的内容翻译过来就是win11的中国家庭版,还有一个是专业版的

os.homedir

  • 读取到用户名所在的目录,也就是C盘到用户名的部分
    • 底层原理就是通过%userprofile%(在终端输出用户名所在目录的命令)
    • 在Mac平台,则是使用$HOME
js 复制代码
const os = require('node:os');

console.log(os.homedir());//  C:\Users\XiaoYu

os.arch

  • 返回一个字符串,表示Node.js二进制编译所用的架构(如'x64''arm''ia32'等)
  • 日常使用这个就可能比较少了,了解下就OK了
js 复制代码
console.log(os.arch())//x64

os.cpus

  • 返回一个对象数组,包含安装的每个CPU/核的信息,包括型号、速度(以MHz为单位)和时间(一个包含用户、系统和空闲时间的对象)。
js 复制代码
const os = require('node:os');

console.log(os.cpus());

//返回的部分内容
{
  model: '12th Gen Intel(R) Core(TM) i7-12700H', // CPU的型号
  speed: 2688, // 表示CPU的时钟速度,以MHz或GHz为单位
  times: { //是一个包含CPU使用时间的对象
    user: 4483234, // 表示CPU被用户程序使用的时间(以毫秒为单位)
    nice: 0, // 表示CPU被优先级较低的用户程序使用的时间(以毫秒为单位)
    sys: 10543609, // 表示CPU被系统内核使用的时间(以毫秒为单位)
    idle: 319127328, // 表示CPU处于空闲状态的时间(以毫秒为单位)
    irq: 1739875 //  表示CPU被硬件中断处理程序使用的时间(以毫秒为单位)
  }
}
  • 我们还能通过length获取到这个cpus的长度
    • 这个长度是和CPU的逻辑处理器有关系的,比如下面图中,我输出的就是20,表示我电脑是20个逻辑处理器(线程)的
  • 通过Ctrl+Shift+ESC打开任务管理器,查看性能,就能找到这块内容

os.networkInterfaces

  • 是network Interfaces,英文翻译就是网络接口,它的作用就是查看网络信息
js 复制代码
{
  // 'lo' 是本地回环接口,通常用于网络软件的测试和进程间通信
  lo: [
    {
      address: '127.0.0.1', // IPv4的本地回环地址,用于指向本机
      netmask: '255.0.0.0', // 子网掩码,定义了网络和主机部分
      family: 'IPv4', // 地址族,这里是IPv4
      mac: '00:00:00:00:00:00', // MAC地址,本地回环通常为00:00:00:00:00:00
      internal: true, // 标识这是一个内部接口(内网)
      cidr: '127.0.0.1/8' // CIDR表示法,结合IP地址和子网掩码
    },
    {
      address: '::1', // IPv6的本地回环地址
      netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', // IPv6的子网掩码
      family: 'IPv6', // 地址族,这里是IPv6
      mac: '00:00:00:00:00:00', // MAC地址,与IPv4接口相同
      scopeid: 0, // 用于IPv6,标识地址的作用域
      internal: true, // 同样是内部接口
      cidr: '::1/128' // IPv6的CIDR表示法
    }
  ],
  // 'eth0' 是一个以太网接口,通常连接到局域网或互联网
  eth0: [
    {
      address: '192.168.1.108', // 设备在局域网内的IPv4地址
      netmask: '255.255.255.0', // 子网掩码
      family: 'IPv4', // 地址族,这里是IPv4
      mac: '01:02:03:0a:0b:0c', // 设备的MAC地址
      internal: false, // 标识这是一个外部接口
      cidr: '192.168.1.108/24' // CIDR表示法
    },
    {
      address: 'fe80::a00:27ff:fe4e:66a1', // 设备在局域网内的IPv6链接本地地址
      netmask: 'ffff:ffff:ffff:ffff::', // IPv6的子网掩码
      family: 'IPv6', // 地址族,这里是IPv6
      mac: '01:02:03:0a:0b:0c', // 与IPv4接口相同的MAC地址
      scopeid: 1, // IPv6地址的作用域ID
      internal: false, // 同样是外部接口
      cidr: 'fe80::a00:27ff:fe4e:66a1/64' // IPv6的CIDR表示法
    }
  ]
}

os模块功能总结

序号 API 作用
1 os.platform() 返回标识操作系统平台的字符串。
2 os.arch() 返回Node.js二进制编译所用的架构。
3 os.type() 返回操作系统的名字。
4 os.release() 返回操作系统的发行版本。
5 os.hostname() 返回操作系统的主机名。
6 os.userInfo([options]) 返回当前有效用户的信息。
7 os.cpus() 返回一个对象数组,包含安装的每个CPU/核的信息。
8 os.totalmem() 返回系统的总内存量(以字节为单位)。
9 os.freemem() 返回系统的空闲内存量(以字节为单位)。
10 os.uptime() 返回系统的正常运行时间(以秒为单位)。
11 os.loadavg() 返回一个包含1、5、15分钟平均负载的数组。
12 os.networkInterfaces() 返回一个对象,包含已分配网络地址的网络接口。
13 os.tmpdir() 返回操作系统的默认临时文件目录。
14 os.endianness() 返回CPU的字节序,可能是"BE"(大端)或"LE"(小端)。
15 os.homedir() 返回当前用户的主目录。

案例:Vite配置项open:true

  • 在不同的操作系统上打开指定的URL地址。根据运行代码的操作系统(macOS、Windows或Linux/Unix-like),函数会执行相应的命令行命令来启动默认的Web浏览器并导航到提供的URL
  • 其实是很简单的一个代码,我们是通过执行shell命令来完成的,winow中利用start,加上要打开的网页,合起来就是 start(打开) URL(网页)。然后再进行边界判断一下,当前使用者是什么系统,采用不同的命令完成打开网页
js 复制代码
// 引入Node.js的child_process模块中的exec函数,用于执行shell命令
const { exec } = require('child_process');
// 引入Node.js的os模块,用于获取操作系统相关的信息
const os = require('node:os');

function openBrowser(url) {
  // 定义一个对象来映射操作系统平台和打开URL所需执行的命令
  const commands = {
    darwin: 'open',  // macOS系统的命令
    win32: 'start',  // Windows系统的命令
    linux: 'xdg-open',  // Linux系统的命令,也适用于大多数Unix-like系统
  };

  // 获取当前操作系统平台的命令,如果不在映射中,默认使用 'xdg-open'
  const command = commands[os.platform()] || 'xdg-open';

  // 执行命令打开URL
  exec(`${command} ${url}`);
}

// 调用openBrowser函数的示例,打开一个网页(这个案例的网页是能开的)
openBrowser('https://xiaoyu2002.cn');
相关推荐
速盾cdn25 分钟前
速盾:网页游戏部署高防服务器有什么优势?
服务器·前端·web安全
小白求学127 分钟前
CSS浮动
前端·css·css3
什么鬼昵称28 分钟前
Pikachu-csrf-CSRF(POST)
前端·csrf
golitter.1 小时前
Vue组件库Element-ui
前端·vue.js·ui
儒雅的烤地瓜1 小时前
JS | JS中判断数组的6种方法,你知道几个?
javascript·instanceof·判断数组·数组方法·isarray·isprototypeof
道爷我悟了1 小时前
Vue入门-指令学习-v-on
javascript·vue.js·学习
27669582921 小时前
京东e卡滑块 分析
java·javascript·python·node.js·go·滑块·京东
golitter.1 小时前
Ajax和axios简单用法
前端·ajax·okhttp
PleaSure乐事1 小时前
【Node.js】内置模块FileSystem的保姆级入门讲解
javascript·node.js·es6·filesystem
雷特IT1 小时前
Uncaught TypeError: 0 is not a function的解决方法
前端·javascript