OS 操作系统

os 模块可以跟操作系统进行交互

1const os = require("node:os")

os.type()

1log(os.type()); // Darwin

os.platform()

1log(os.platform()); // darwin

os.release()

返回操作系统的版本

1log(os.release()); // 23.4.0

os.homedir()

返回用户目录

1log(os.homedir()); // /Users/dongxu

os.arch()

返回cpu的架构,可能的值为 'arm''arm64''ia32''mips''mipsel''ppc''ppc64''s390''s390x'、以及 'x64'

1log(os.arch()); // arm64

os.cpus()

获取CPU的线程以及详细信息

1log(os.cpus());
2log(os.cpus().length); // 8
  • model: 表示CPU的型号信息。
  • speed: 表示CPU的时钟速度,以MHz或GHz为单位。
  • times: 是一个包含CPU使用时间的对象,其中包含以下属性:
    • user: 表示CPU被用户程序使用的时间(以毫秒为单位)。

    • nice: 表示CPU被优先级较低的用户程序使用的时间(以毫秒为单位)。

    • sys: 表示CPU被系统内核使用的时间(以毫秒为单位)。

    • idle: 表示CPU处于空闲状态的时间(以毫秒为单位)。

    • irq: 表示CPU被硬件中断处理程序使用的时间(以毫秒为单位)。

os.networkInterfaces()

获取网络信息

1log(os.networkInterfaces());
  • address: 表示本地回环接口的IP地址,这里是 '127.0.0.1'
  • netmask: 表示本地回环接口的子网掩码,这里是 '255.0.0.0'
  • family: 表示地址族(address family),这里是 'IPv4',表示IPv4地址。
  • mac: 表示本地回环接口的MAC地址,这里是 '00:00:00:00:00:00'。请注意,本地回环接口通常不涉及硬件,因此MAC地址通常为全零。
  • internal: 表示本地回环接口是否是内部接口,这里是 true,表示它是一个内部接口。
  • cidr: 表示本地回环接口的CIDR表示法,即网络地址和子网掩码的组合,这里是 '127.0.0.1/8',表示整个 127.0.0.0 网络。

os.version()

1log(os.version()); // Darwin Kernel Version 23.4.0: Fri Mar 15 00:11:08 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T8122

案例

知道这些信息有什么用?

非常经典的例子 webpackvite 大家应该都用过,他们有一个配置项可以打开浏览器 open:true 我们来简单复刻一下

1const { exec } = require("child_process");
2const os = require("os");
3
4function openBrowser(url) {
5  if (os.platform() === "darwin") {
6    // macOS
7    exec(`open ${url}`); //执行shell脚本
8  } else if (os.platform() === "win32") {
9    // Windows
10    exec(`start ${url}`); //执行shell脚本
11  } else {
12    // Linux, Unix-like
13    exec(`xdg-open ${url}`); //执行shell脚本
14  }
15}
16
17// Example usage
18openBrowser("https://www.baidu.com");