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 相关文章推荐
offsetParent 算法分析
Apr 05 Javascript
js中数组Array的一些常用方法总结
Aug 12 Javascript
javascript 通用loading动画效果实例代码
Jan 14 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
May 11 Javascript
一个检测表单数据的JavaScript实例
Oct 31 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
jquery中ajax处理跨域的三大方式
Jan 05 Javascript
JS中call/apply、arguments、undefined/null方法详解
Feb 15 Javascript
javascript入门之string对象【新手必看】
Nov 22 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
Jul 18 Javascript
Vue插件之滑动验证码
Sep 21 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
Nov 13 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
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
破解Session cookie的方法
2006/07/28 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
angularjs基础教程
2014/12/25 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python 输出一个两行字符的变量
2009/02/05 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
Python如何给你的程序做性能测试
2020/07/29 Python
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
智利最大的网上商店:Linio智利
2016/11/24 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
大一学生假期实习的自我评价
2013/10/12 职场文书
我的大学生活职业生涯规划
2014/01/02 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
毕业论文评语大全
2014/04/29 职场文书
务虚会发言材料
2014/12/25 职场文书
法制教育观后感
2015/06/17 职场文书
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers