本文实例讲述了Node.js API详解之 os模块用法。分享给大家供大家参考,具体如下:os是Node的一个基础模块,提供了一些操作系统相关的属性接口。通过 const os = require('os'); 的方式引用os模块,我们接着看下os都有哪些功能const os = require('os');说明:
一个字符串常量,定义操作系统相关的行末标志:POSIX 系统上值为\n,Windows下的值为\r\n
一个字符串常量,定义操作系统相关的行末标志:POSIX 系统上值为\n,Windows下的值为\r\ndemo:
console.log('abc'+ os.EOL +'123');
//abc
//123


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

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


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

os.constants说明:
此常量是一个包含错误码,处理信号等系统常量的对象。具体描述可以查看:OS 常量
此常量是一个包含错误码,处理信号等系统常量的对象。具体描述可以查看: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
//
}
// }


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 内核的信息。
该方法返回一个对象数组, 包含每个逻辑 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 }
//
} ]


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


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

os.freemem()说明:
该方法以整数的形式返回空闲系统内存的字节数
该方法以整数的形式返回空闲系统内存的字节数demo:
console.log(os.freemem());
//7155720212


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

os.homedir()说明:
该方法以字符串的形式返回当前用户的home目录
该方法以字符串的形式返回当前用户的home目录demo:
console.log(os.homedir());
// /Users/xiaoqiang


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

os.hostname()说明:
该方法以字符串的形式返回操作系统的主机名
该方法以字符串的形式返回操作系统的主机名demo:
console.log(os.hostname());
//xiaoqiangMacBook-Pro.local


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

os.loadavg()说明:
该方法返回一个数组,包含1, 5, 15分钟平均负载.
该方法返回一个数组,包含1, 5, 15分钟平均负载.demo:
console.log(os.loadavg());
//[ 2.57080078125, 2.38037109375, 2.30908203125 ] windows下返回[0, 0, 0]


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'
//
}
//
]
// }


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′
该方法返回Node.js编译时的操作系统平台,值可能为:'aix','darwin','freebsd','linux','openbsd','sunos','win32′demo:
console.log(os.platform());
// darwin


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

os.release()说明:
该方法返回一个字符串, 指定操作系统的发行版.
该方法返回一个字符串, 指定操作系统的发行版.demo:
console.log(os.release());
// 17.2.0


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

os.tmpdir()说明:
该方法返回一个字符串, 指定操作系统的发行版.
该方法返回一个字符串, 指定操作系统的发行版.demo:
console.log(os.tmpdir());
// /var/folders/xv/4dbb00000gn/T


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

os.totalmem()说明:
该方法以整数的形式返回所有系统内存的字节数.
该方法以整数的形式返回所有系统内存的字节数.demo:
console.log(os.totalmem());
//17179869184


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

os.type()说明:
该方法返回一个字符串,表明操作系统的名字
该方法返回一个字符串,表明操作系统的名字demo:
console.log(os.type());
// Darwin


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

os.uptime()说明:
该方法在几秒内返回操作系统的上线时间
该方法在几秒内返回操作系统的上线时间demo:
console.log(os.uptime());
// 1293306


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

os.userInfo([options])说明:
该方法用来获取当前有效用户的信息
该方法传递一个encoding参数,用来指定返回值的编码方式,默认utf8,也可以设置为:buffer。
该方法用来获取当前有效用户的信息
该方法传递一个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:
// }


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程序设计有所帮助。