os 模块可以用来获取操作系统的底层信息和系统上运行的程序,以及和系统交互。

它集成在 node.js 中,只需要引入即可:

const os = require('os')

这里先介绍一些在处理文件时有用的 properties:

  • os.EOL 会返回 line delimiter 行定界符,\n on Linux and macOS, and \r\n on Windows
  • os.constants.signals 提供处理进程的信号常数,如:SIGHUP, SIGKILL
  • os.constants.errno 提供报告 error 的相关常数,如:EADDRINUSE, EOVERFLOW

完整的 signals 信号列表参考:https://nodejs.org/api/os.html#os_signal_constants

下面介绍 os 模块常用的 method。

os.arch()

os.arch() 会返回底层架构的字符串,如:arm, x64, arm64:

console.log(os.arch())

//output:
x64

os.cpus()

os.cpus() 会返回系统的 cpu 信息:

console.log(os.cpus())

//output:
[
  {
    model: 'Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz',
    speed: 2591,
    times: {
      user: 1871810,
      nice: 17880,
      sys: 1451160,
      idle: 81134010,
      irq: 0
    }
  },
  {
    model: 'Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz',
    speed: 2591,
    times: {
      user: 1838130,
      nice: 12780,
      sys: 1532060,
      idle: 81234660,
      irq: 0
    }
  }
]

os.endianness()

根据 node.js 是通过 Big Endian 或 Little Endian 大尾数或小尾数编译的,os.endianness() 返回 BELE

console.log(os.endianness())

//output:
LE

关于 Big Endian 或 Little Endian 参考:https://en.wikipedia.org/wiki/Endianness
1.jpg

os.freemem()

os.freemem() 返回系统可用内存,以字节为单位:

console.log(os.freemem())

//output:
574537728

os.homedir()

os.homedir() 返回系统当前用户的 home 目录路径:

console.log(os.homedir())

//output:
/home/marco

os.hostname()

os.hostname() 返回 hostname 信息:

console.log(os.hostname())

//output:
marco-virtual-machine

os.loadavg()

os.loadavg() 返回系统计算的平均加载时间,此 method 只在 Linux/macOS 下有意义:

console.log(os.loadavg())

//output:
[ 0.08, 0.17, 0.13 ]

os.networkInterfaces()

os.networkInterfaces() 返回系统的网卡信息:

console.log(os.networkInterfaces())

//output:
{ lo0:
   [ { address: '127.0.0.1',
       netmask: '255.0.0.0',
       family: 'IPv4',
       mac: 'fe:82:00:00:00:00',
       internal: true },
     { address: '::1',
       netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
       family: 'IPv6',
       mac: 'fe:82:00:00:00:00',
       scopeid: 0,
       internal: true },
     { address: 'fe80::1',
       netmask: 'ffff:ffff:ffff:ffff::',
       family: 'IPv6',
       mac: 'fe:82:00:00:00:00',
       scopeid: 1,
       internal: true } ],
  en1:
   [ { address: 'fe82::9b:8282:d7e6:496e',
       netmask: 'ffff:ffff:ffff:ffff::',
       family: 'IPv6',
       mac: '06:00:00:02:0e:00',
       scopeid: 5,
       internal: false },
     { address: '192.168.1.38',
       netmask: '255.255.255.0',
       family: 'IPv4',
       mac: '06:00:00:02:0e:00',
       internal: false } ],
  utun0:
   [ { address: 'fe80::2513:72bc:f405:61d0',
       netmask: 'ffff:ffff:ffff:ffff::',
       family: 'IPv6',
       mac: 'fe:80:00:20:00:00',
       scopeid: 8,
       internal: false } ] }

os.platform()

os.platform() 返回当前安装的 node.js 的编译平台,可能的返回值为:

  • darwin
  • freebsd
  • linux
  • openbsd
  • win32
  • ...more

os.release()

os.release() 返回当前系统的版本号信息:

console.log(os.release())

//output:
5.8.0-41-generic

os.tmpdir()

os.tmpdir() 返回系统的临时文件夹路径:

console.log(os.tmpdir())

//output:
/tmp

os.totalmem()

os.totalmem() 返回系统的总内存数量,单位为 byte 字节:

console.log(os.totalmem()/1024/1024)

//output:
1958.45703125

os.type()

os.type() 返回当前操作系统类型,返回值可以有:

  • Linux
  • Darwin on macOS
  • Windows_NT on Windows

os.uptime()

os.uptime() 返回系统从上次开机来已运行的总时间,单位为秒:

console.log(os.uptime()/3600)

//output:
24.260555555555555

os.userInfo()

os.userInfo() 返回一个 object 包含当前的 username, uid, gid, shell, 和 homedir

console.log(os.userInfo())

//output:
{
  uid: 1000,
  gid: 1000,
  username: 'marco',
  homedir: '/home/marco',
  shell: '/bin/bash'
}

以上就是 os 模块的简单使用方法。

标签:无

你的评论