Nodejs os 模块可以跟操作系统进行交互
var os = require("node:os")
| 序号 | API | 作用 |
| 1 | os.type() | 它在 Linux 上返回 'Linux',在 macOS 上返回 'Darwin',在 Windows 上返回 'Windows_NT' |
| 2 | os.platform() | 返回标识为其编译 Node.js 二进制文件的操作系统平台的字符串。 该值在编译时设置。 可能的值为 'aix'、'darwin'、'freebsd'、'linux'、'openbsd'、'sunos'、以及 'win32' |
| 3 | os.release() | 返回操作系统的版本例如10.xxxx win10 |
| 4 | os.homedir() | 返回用户目录 例如c:\user\xiaoman 原理就是 windows echo %USERPROFILE% posix $HOME |
| 5 | os.arch() | 返回cpu的架构 可能的值为 'arm'、'arm64'、'ia32'、'mips'、'mipsel'、'ppc'、'ppc64'、's390'、's390x'、以及 'x64' |
获取CPU的线程以及详细信息
const os = require('node:os') os.cpus()
[ { model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', speed: 2926, times: { user: 252020, nice: 0, sys: 30340, idle: 1070356870, irq: 0, }, }, { model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', speed: 2926, times: { user: 306960, nice: 0, sys: 26980, idle: 1071569080, irq: 0, }, }, { model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', speed: 2926, times: { user: 248450, nice: 0, sys: 21750, idle: 1070919370, irq: 0, }, }, { model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz', speed: 2926, times: { user: 256880, nice: 0, sys: 19430, idle: 1070905480, irq: 20, }, }, ] //.........
model: 表示CPU的型号信息,其中 “Intel® Core™ i7 CPU 860 @ 2.80GHz” 是一种具体的型号描述。speed: 表示CPU的时钟速度,以MHz或GHz为单位。在这种情况下,速度为 2926 MHz 或 2.926 GHz。times: 是一个包含CPU使用时间的对象,其中包含以下属性:
user: 表示CPU被用户程序使用的时间(以毫秒为单位)。nice: 表示CPU被优先级较低的用户程序使用的时间(以毫秒为单位)。sys: 表示CPU被系统内核使用的时间(以毫秒为单位)。idle: 表示CPU处于空闲状态的时间(以毫秒为单位)。irq: 表示CPU被硬件中断处理程序使用的时间(以毫秒为单位)。
例如我的电脑是六核十二线程就会获取到12个线程
获取网络信息
const os = require('node:os') os.networkInterfaces()
{ lo: [ { address: '127.0.0.1', netmask: '255.0.0.0', family: 'IPv4', mac: '00:00:00:00:00:00', internal: true, cidr: '127.0.0.1/8' }, { address: '::1', netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', family: 'IPv6', mac: '00:00:00:00:00:00', scopeid: 0, internal: true, cidr: '::1/128' } ], eth0: [ { address: '192.168.1.108', netmask: '255.255.255.0', family: 'IPv4', mac: '01:02:03:0a:0b:0c', internal: false, cidr: '192.168.1.108/24' }, { address: 'fe80::a00:27ff:fe4e:66a1', netmask: 'ffff:ffff:ffff:ffff::', family: 'IPv6', mac: '01:02:03:0a:0b:0c', scopeid: 1, internal: false, cidr: 'fe80::a00:27ff:fe4e:66a1/64' } ] }
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网络。
案例
知道这些信息有什么用?
非常经典的例子 webpack vite 大家应该都用过 他们有一个配置项可以打开浏览器 open:true 我们来简单复刻一下
const { exec } = require('child_process'); const os = require('os'); function openBrowser(url) { if (os.platform() === 'darwin') { // macOS exec(`open ${url}`); //执行shell脚本 } else if (os.platform() === 'win32') { // Windows exec(`start ${url}`); //执行shell脚本 } else { // Linux, Unix-like exec(`xdg-open ${url}`); //执行shell脚本 } } // Example usage openBrowser('https://www.juejin.cn');
