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');