前端开发系列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.
整体结构
![](http://img.wendingding.vip/blog/node_os.png)
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常量和错误常量相关的信息,请参考官方文档。