Node.js API详解之 os模块用法实例分析
- 作者: 倾尽一世柔情丶
- 来源: 51数据库
- 2021-08-27
本文实例讲述了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程序设计有所帮助。
