Node.js API详解之 os模块用法实例分析


Posted in Javascript onMay 06, 2020

本文实例讲述了Node.js API详解之 os模块用法。分享给大家供大家参考,具体如下:

os是Node的一个基础模块,提供了一些操作系统相关的属性接口。

通过 const os = require('os'); 的方式引用os模块,我们接着看下os都有哪些功能

说明:

一个字符串常量,定义操作系统相关的行末标志:POSIX 系统上值为\n,Windows下的值为\r\n

demo:

console.log('abc'+ os.EOL +'123');
//abc
//123

os.arch()

说明:

该方法返回一个字符串,来说明当前运行环境的CPU架构,
可能的值有: 'arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 's390', 's390x', 'x32', 'x64', 和 'x86'

demo:

console.log(os.arch());
//x64

os.constants

说明:

此常量是一个包含错误码,处理信号等系统常量的对象。具体描述可以查看:OS 常量

demo:

console.log(os.constants);
// { UV_UDP_REUSEADDR: 4,   //libuv 常量
//  errno:
//  { E2BIG: 7,
//   EACCES: 13,
//   EADDRINUSE: 48,
//   EADDRNOTAVAIL: 49,
//   EAFNOSUPPORT: 47,
//   EAGAIN: 35,
//   EALREADY: 37,
//   EBADF: 9,
//   EBADMSG: 94,
//   EBUSY: 16,
//   ECANCELED: 89,
//   ECHILD: 10,
//   ECONNABORTED: 53,
//   ECONNREFUSED: 61,
//   ECONNRESET: 54,
//   EDEADLK: 11,
//   EDESTADDRREQ: 39,
//   EDOM: 33,
//   EDQUOT: 69,
//   EEXIST: 17,
//   EFAULT: 14,
//   EFBIG: 27,
//   EHOSTUNREACH: 65,
//   EIDRM: 90,
//   EILSEQ: 92,
//   EINPROGRESS: 36,
//   EINTR: 4,
//   EINVAL: 22,
//   EIO: 5,
//   EISCONN: 56,
//   EISDIR: 21,
//   ELOOP: 62,
//   EMFILE: 24,
//   EMLINK: 31,
//   EMSGSIZE: 40,
//   EMULTIHOP: 95,
//   ENAMETOOLONG: 63,
//   ENETDOWN: 50,
//   ENETRESET: 52,
//   ENETUNREACH: 51,
//   ENFILE: 23,
//   ENOBUFS: 55,
//   ENODATA: 96,
//   ENODEV: 19,
//   ENOENT: 2,
//   ENOEXEC: 8,
//   ENOLCK: 77,
//   ENOLINK: 97,
//   ENOMEM: 12,
//   ENOMSG: 91,
//   ENOPROTOOPT: 42,
//   ENOSPC: 28,
//   ENOSR: 98,
//   ENOSTR: 99,
//   ENOSYS: 78,
//   ENOTCONN: 57,
//   ENOTDIR: 20,
//   ENOTEMPTY: 66,
//   ENOTSOCK: 38,
//   ENOTSUP: 45,
//   ENOTTY: 25,
//   ENXIO: 6,
//   EOPNOTSUPP: 102,
//   EOVERFLOW: 84,
//   EPERM: 1,
//   EPIPE: 32,
//   EPROTO: 100,
//   EPROTONOSUPPORT: 43,
//   EPROTOTYPE: 41,
//   ERANGE: 34,
//   EROFS: 30,
//   ESPIPE: 29,
//   ESRCH: 3,
//   ESTALE: 70,
//   ETIME: 101,
//   ETIMEDOUT: 60,
//   ETXTBSY: 26,
//   EWOULDBLOCK: 35,
//   EXDEV: 18 },
//  signals:
//  { SIGHUP: 1,
//   SIGINT: 2,
//   SIGQUIT: 3,
//   SIGILL: 4,
//   SIGTRAP: 5,
//   SIGABRT: 6,
//   SIGIOT: 6,
//   SIGBUS: 10,
//   SIGFPE: 8,
//   SIGKILL: 9,
//   SIGUSR1: 30,
//   SIGSEGV: 11,
//   SIGUSR2: 31,
//   SIGPIPE: 13,
//   SIGALRM: 14,
//   SIGTERM: 15,
//   SIGCHLD: 20,
//   SIGCONT: 19,
//   SIGSTOP: 17,
//   SIGTSTP: 18,
//   SIGTTIN: 21,
//   SIGTTOU: 22,
//   SIGURG: 16,
//   SIGXCPU: 24,
//   SIGXFSZ: 25,
//   SIGVTALRM: 26,
//   SIGPROF: 27,
//   SIGWINCH: 28,
//   SIGIO: 23,
//   SIGINFO: 29,
//   SIGSYS: 12 
//  } 
// }

os.cpus()

说明:

该方法返回一个对象数组, 包含每个逻辑 CPU 内核的信息。

demo:

console.log(os.cpus());
// [ { model: 'Intel(R) Core(TM) i5-5287U CPU @ 2.90GHz',
//   speed: 2900,
//   times: { 
//   user: 96756760, //CPU花费在用户模式下的毫秒时间数
//   nice: 0,  //CPU花费在良好模式下的毫秒时间数
//   sys: 80507720, //CPU花费在系统模式下的毫秒时间数
//   idle: 606147830, //CPU花费在空闲模式下的毫秒时间数
//   irq: 0  //CPU花费在中断请求模式下的毫秒时间数
//   } 
//  },
//  { model: 'Intel(R) Core(TM) i5-5287U CPU @ 2.90GHz',
//   speed: 2900,
//   times: { user: 43796970, nice: 0, sys: 37796280, idle: 701811920, irq: 0 } 
//  },
//  { model: 'Intel(R) Core(TM) i5-5287U CPU @ 2.90GHz',
//   speed: 2900,
//   times: { user: 94060830, nice: 0, sys: 68641950, idle: 620702410, irq: 0 } 
//  },
//  { model: 'Intel(R) Core(TM) i5-5287U CPU @ 2.90GHz',
//   speed: 2900,
//   times: { user: 45641410, nice: 0, sys: 39136540, idle: 698627210, irq: 0 } 
//  } ]

os.endianness()

说明:

该方法返回一个字符串,表明Node.js二进制编译环境的字节顺序,可能的值为:'BE'(Big-Endian) 大端模式,'LE'(Little-Endian) 小端模式
大端模式:是指数据的高字节保存在内存的低地址中,数据的低字节保存在内存的高地址中。
小端模式:是指数据的高字节保存在内存的高地址中,数据的低字节保存在内存的低地址中。
以 0x12345678 为例:

demo:

console.log(os.endianness());
//LE

os.freemem()

说明:

该方法以整数的形式返回空闲系统内存的字节数

demo:

console.log(os.freemem());
//7155720192

os.homedir()

说明:

该方法以字符串的形式返回当前用户的home目录

demo:

console.log(os.homedir());
// /Users/xiaoqiang

os.hostname()

说明:

该方法以字符串的形式返回操作系统的主机名

demo:

console.log(os.hostname());
//xiaoqiangMacBook-Pro.local

os.loadavg()

说明:

该方法返回一个数组,包含1, 5, 15分钟平均负载.

demo:

console.log(os.loadavg());
//[ 2.57080078125, 2.38037109375, 2.30908203125 ] windows下返回[0, 0, 0]

os.networkInterfaces()

说明:

该方法返回一个对象,包含被赋予网络地址的网络接口.

demo:

console.log(os.networkInterfaces());
// {
//  lo: [
//   {
//    address: '127.0.0.1', //被赋予的 IPv4 或 IPv6 地址
//    netmask: '255.0.0.0', //IPv4 或 IPv6 子网掩码
//    family: 'IPv4', //IPv4 或 IPv6
//    mac: '00:00:00:00:00:00', //网络接口的MAC地址
//    internal: true, //如果 网络接口是loopback或相似的远程不能用的接口时, 值为true,否则为false
//    cidr: '127.0.0.1/8' //以 CIDR 表示法分配的带有路由前缀的 IPv4 或 IPv6 地址。如果 netmask 参数不可用,则该属性是 null
//   },
//   {
//    address: '::1',
//    netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
//    family: 'IPv6',
//    mac: '00:00:00:00:00:00',
//    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',
//    internal: false,
//    cidr: 'fe80::a00:27ff:fe4e:66a1/64'
//   }
//  ]
// }

os.platform()

说明:

该方法返回Node.js编译时的操作系统平台,值可能为:'aix','darwin','freebsd','linux','openbsd','sunos','win32′

demo:

console.log(os.platform());
// darwin

os.release()

说明:

该方法返回一个字符串, 指定操作系统的发行版.

demo:

console.log(os.release());
// 17.2.0

os.tmpdir()

说明:

该方法返回一个字符串, 指定操作系统的发行版.

demo:

console.log(os.tmpdir());
// /var/folders/xv/4dbb00000gn/T

os.totalmem()

说明:

该方法以整数的形式返回所有系统内存的字节数.

demo:

console.log(os.totalmem());
//17179869184

os.type()

说明:

该方法返回一个字符串,表明操作系统的名字

demo:

console.log(os.type());
// Darwin

os.uptime()

说明:

该方法在几秒内返回操作系统的上线时间

demo:

console.log(os.uptime());
// 1293306

os.userInfo([options])

说明:

该方法用来获取当前有效用户的信息
该方法传递一个encoding参数,用来指定返回值的编码方式,默认utf8,也可以设置为:buffer。

demo:

console.log(os.userInfo());
// { 
//  uid: 501,
//  gid: 20,
//  username: 'xiaoqiang',
//  homedir: '/Users/xiaoqiang',
//  shell: '/bin/bash' 
// }
 
console.log(os.userInfo({encoding: 'buffer'}));
// { 
//  uid: 501,
//  gid: 20,
//  username: ,
//  homedir: ,
//  shell: 
// }

希望本文所述对大家node.js程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 学习笔记(十五)
Jan 28 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
Mar 23 Javascript
jQuery简单实现网页选项卡特效
Nov 24 Javascript
jQuery.holdReady()方法用法实例
Dec 27 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
Jan 04 Javascript
Bootstrap笔记—折叠实例代码
Mar 13 Javascript
详解Angular 4.x NgIf 的用法
May 22 Javascript
详解如何使用webpack+es6开发angular1.x
Aug 16 Javascript
JS实现页面跳转与刷新的方法汇总
Aug 30 Javascript
Vue中fragment.js使用方法小结
Feb 17 Javascript
微信小程序实现左滑删除效果
Nov 18 Javascript
js实现无缝轮播图特效
May 09 #Javascript
js实现上传按钮并显示缩略图小轮子
May 04 #Javascript
js代码实现轮播图
May 04 #Javascript
原生js实现轮播图特效
May 04 #Javascript
jquery实现手风琴案例
May 04 #jQuery
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
May 03 #Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
May 03 #Javascript
You might like
PHP安全配置
2006/12/06 PHP
php之可变函数的实例详解
2017/09/13 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
python getopt 参数处理小示例
2009/06/09 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
Python可以实现栈的结构吗
2020/05/27 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
文职个人求职信范文
2013/09/23 职场文书
工程力学硕士生的自我评价范文
2013/11/16 职场文书
时尚休闲吧创业计划书
2014/01/25 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
四风自我剖析材料
2014/09/30 职场文书
民主评议党员工作总结
2014/10/20 职场文书
房产公证书
2015/01/23 职场文书
音乐课外活动总结
2015/05/09 职场文书
中国合伙人观后感
2015/06/02 职场文书