Nodejs 第十三章(os)

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

var os = require("node:os")
序号API作用
1os.type()它在 Linux 上返回 'Linux',在 macOS 上返回 'Darwin',在 Windows 上返回 'Windows_NT'
2os.platform()返回标识为其编译 Node.js 二进制文件的操作系统平台的字符串。 该值在编译时设置。 可能的值为 'aix''darwin''freebsd''linux''openbsd''sunos'、以及 'win32'
3os.release()返回操作系统的版本例如10.xxxx win10
4os.homedir()返回用户目录 例如c:\user\xiaoman 原理就是 windows echo %USERPROFILE% posix $HOME
5os.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(R) Core(TM) 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个线程

image.png

获取网络信息

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');
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务