前端开发系列089-Node篇之os

一、OS模块介绍

Node中的OS模块提供了和当前系统相关的一系列实用方法。在代码中可以直接用os = require("os")的方式来引入。OS模块本身非常的简单,本文将简单对其常用的方法和重要属性进行介绍并提供示例。

wendingding$ node
> console.dir(os,{showHiddren:true,depth:0,colors:true})

{ arch: [Object],
  cpus: [Function: cpus],
  EOL: '\n',
  endianness: [Object],
  freemem: [Object],
  homedir: [Object],
  hostname: [Object],
  loadavg: [Function: loadavg],
  networkInterfaces: [Function: networkInterfaces],
  platform: [Object],
  release: [Object],
  tmpdir: [Object],
  totalmem: [Object],
  type: [Object],
  userInfo: [Function: getUserInfo],
  uptime: [Object],
  getNetworkInterfaces: [Function: deprecated],
  tmpDir: [Function: deprecated],
  constants: [Object] 
}

二、基本使用

OS模块中的这些方法都不接受参数,全是获取(信息)型的方法,使用简单直接调用即可。

//001 导入模块
var os = require("os");
//002 迭代os对象
for(var f in os)
{
    //003 获取os对象所有的方法并控制输出
    if(typeof os[f] === "function")
    {
        console.log("当前方法名称:",f);
        console.log("调用执行结果:",os[f]());
    }else
    {
        //004 获取os对象中所有的属性并输出名称
        console.log("当前属性名称:",f);
    }
    console.log("_____________");
}

使用自己的电脑进行测试,执行上面的代码,打印OS模块中所有的方法名并调用这些方法输出结果,下面列出命令行执行JavaScript文件的结果。

wendingding$ node os.js 
当前方法名称: arch
调用执行结果: x64
_____________
当前方法名称: cpus
调用执行结果: [ { model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
    speed: 2700,
    times: { user: 730600, nice: 0, sys: 570160, idle: 4650220, irq: 0 } },
  { model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
    speed: 2700,
    times: { user: 247120, nice: 0, sys: 137070, idle: 5566140, irq: 0 } },
  { model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
    speed: 2700,
    times: { user: 667530, nice: 0, sys: 377510, idle: 4905300, irq: 0 } },
  { model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
    speed: 2700,
    times: { user: 256200, nice: 0, sys: 137540, idle: 5556590, irq: 0 } } ]
_____________
当前属性名称: EOL
_____________
当前方法名称: endianness
调用执行结果: LE
_____________
当前方法名称: freemem
调用执行结果: 159780864
_____________
当前方法名称: homedir
调用执行结果: /Users/文顶顶
_____________
当前方法名称: hostname
调用执行结果: wendingding.local
_____________
当前方法名称: loadavg
调用执行结果: [ 1.8583984375, 1.6640625, 1.6328125 ]
_____________
当前方法名称: networkInterfaces
调用执行结果: { lo0: 
   [ { 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' }
       ···省略···
   ]}
_____________
当前方法名称: platform
调用执行结果: darwin
_____________
当前方法名称: release
调用执行结果: 17.4.0
_____________
当前方法名称: tmpdir
调用执行结果: /var/folders/6t/83z6zbfn0w56l2dzc_c2y1wh0000gn/T
_____________
当前方法名称: totalmem
调用执行结果: 8589934592
_____________
当前方法名称: type
调用执行结果: Darwin
_____________
当前方法名称: userInfo
调用执行结果: { uid: 501,
  gid: 20,
  username: 'wendingding',
  homedir: '/Users/文顶顶',
  shell: '/bin/bash' }
_____________
当前方法名称: uptime
调用执行结果: 8730
_____________
当前方法名称: getNetworkInterfaces
调用执行结果: { lo0: 
   [ { address: '127.0.0.1',
       netmask: '255.0.0.0',
       family: 'IPv4',
       mac: '00:00:00:00:00:00',
       internal: true },
     { address: '::1',
       netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
       family: 'IPv6',
       mac: '00:00:00:00:00:00',
       scopeid: 0,
       internal: true },
     { address: 'fe80::1',
       netmask: 'ffff:ffff:ffff:ffff::',
       family: 'IPv6',
       mac: '00:00:00:00:00:00',
       scopeid: 1,
       internal: true } ],
  en0: 
   [ { address: '192.168.51.245',
       netmask: '255.255.255.0',
       family: 'IPv4',
       mac: 'a4:5e:60:e0:65:b1',
       internal: false } ],
  awdl0: 
   [ { address: 'fe80::58c6:9eff:feb1:f896',
       netmask: 'ffff:ffff:ffff:ffff::',
       family: 'IPv6',
       mac: '5a:c6:9e:b1:f8:96',
       scopeid: 8,
       internal: false } ],
  utun0: 
   [ { address: 'fe80::18e0:16fa:bb6:ab15',
       netmask: 'ffff:ffff:ffff:ffff::',
       family: 'IPv6',
       mac: '00:00:00:00:00:00',
       scopeid: 12,
       internal: false } ] }
_____________
当前方法名称: tmpDir
调用执行结果: /var/folders/6t/83z6zbfn0w56l2dzc_c2y1wh0000gn/T
_____________
当前属性名称: constants
_____________
(node:2128) [DEP0023] DeprecationWarning: os.getNetworkInterfaces is deprecated.
(node:2128) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. 

整体结构

OS模块对象的EOL属性是一个字符串常量,该常量定义了相关操作系统的行末标志。如果是POSIX 系统,那么则对应的是\n符号,如果是Windows系统,那么对应的是\r\n符号。

现存的CPU架构可能存在:'arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 's390', 's390x', 'x32', 'x64'等情况。

二进制编译环境的字节顺序通常有两种:'BE'(大端模式)和'LE'(小端模式)

平均负载是系统活动的测量由操作系统自己计算得出,表达为一个分数. 通常理想的平均负载应该比系统的逻辑CPU的数目要少,平均负载是UNIX相关的概念,在Windows平台上,其返回值总是[0, 0, 0]。

关于OS常量和错误常量相关的信息,请参考官方文档

posted on 2022-12-16 08:56  文顶顶  阅读(145)  评论(0编辑  收藏  举报

导航