节点 JS API:Node.Js 中的操作系统 API

概述
当我们在任何技术堆栈中构建应用程序时,有时需要与操作系统进行交互。每个技术堆栈都为我们提供了与操作系统交互的某些方式。Node.js有一个操作系统 API 模块,可以帮助程序员通过他们的程序与操作系统交互。
介绍
我们都知道操作系统 (OS),但无论如何让我们简单地了解一下它。操作系统是为计算机程序提供通用服务的系统软件,同时它还管理计算机的软硬件资源。一些常见的操作系统有 Windows、macOS、Linux 等。

Node.js 还提供通过 OS 模块与 OS(操作系统)交互的工具。
Node JS 中的操作系统模块
Node.js中的 OS 模块建立操作系统和应用程序之间的交互。操作系统模块由某些有助于执行系统相关活动的属性和方法组成。OS 模块向 Node.js 提供有关操作系统的多种信息,例如主机名、可用(未使用)内存、总内存、操作系统名称、用户信息等。
OS模块可以通过所需的功能包含在程序中:
句法:
var os = require('OS');
javascript
os.EOL 属性
os.EOL 属性返回操作系统特定的行结束标记。行结束标记由它的操作系统指定,例如 Windows 的行结束标记是"\r\n",而 POSIX OS 的行结束标记是"\n"。
演示OS模块OS.EOL属性的程序:
// importing OS module
const os = require('os');
// printing the return value of OS.EOL
console.log(JSON.stringify(os.EOL));
javascript
输出:
"\r\n"
plaintext
说明: 由于我在 Windows 操作系统上该程序,因此输出为"\r\n"。在上面程序的打印语句中,我们必须将os.EOL字符串化为 JSON 才能打印os.EOL的字符,否则它只会打印一个空行(行尾)。
OS 模块的方法
与Node.js的其他模块类似,OS模块也提供了一堆方法供我们使用。其中一些解释如下:
- type(): os.type()方法根据uname(UNIX名称的缩写)返回操作系统名称。例如,它在 Linux 上返回“Linux”,在 macOS 上返回“Darwin”,在 Windows 上返回“Windows_NT”。
例子:
// importing OS module
const os = require('os');
// for windows OS
console.log(os.type());
javascript
输出:
Windows_NT
plaintext
- arch(): os.arch()方法返回编译 Node.js 的机器的操作系统 CPU 架构。可能的返回值可以是**'arm'、 'arm64'、 'ia32'、 'mips'、 'mipsel'、 'ppc'、 'ppc64'、 's390'、 's390x' 和 'x64'** 。
例子:
// importing OS module
const os = require('os');
// for windows 64 bit OS
console.log(os.arch());
javascript
输出:
x64
plaintext
- loadavg(): os.loadavg()方法返回一个包含1、5和15分钟负载平均值的数组。平均负载是在定义的时间段内系统上的平均系统负载。平均负载对于了解我们的系统性能至关重要。
例子:
// importing OS module
const os = require('os');
// for windows OS
console.log(os.loadavg());
javascript
输出:
[ 0, 0, 0 ]
plaintext
说明: 平均负载是 Unix 特有的概念。因此在 Windows 上,返回值始终为[0, 0, 0]。
- hostname(): os.hostname()方法返回操作系统的主机名。
例子:
// importing OS module
const os = require('os');
console.log(os.hostname());
javascript
输出:
LAPTOP-HSH4FDK4
plaintext
- Totalmem(): os.totalmem()方法以整数形式返回总系统内存(以字节为单位)。
例子:
// importing OS module
const os = require('os');
console.log(os.totalmem());
javascript
输出:
8434331648
plaintext
- freemem(): os.freemem()方法以整数形式返回空闲(可用)系统内存量(以字节为单位)。
例子:
// importing OS module
const os = require('os');
console.log(os.freemem());
javascript
输出:
1041686528
plaintext
- 常量: os.constants包含操作系统特定的常量,用于过程信号、错误代码等。
例子:
// importing OS module
const os = require('os');
console.log(os.constants);
javascript
输出:
[Object: null prototype] {
UV_UDP_REUSEADDR: 4,
dlopen: [Object: null prototype] {},
errno: [Object: null prototype] {
E2BIG: 7,
EACCES: 13,
EADDRINUSE: 100,
EADDRNOTAVAIL: 101,
EAFNOSUPPORT: 102,
EAGAIN: 11,
EALREADY: 103,
EBADF: 9,
EBADMSG: 104,
EBUSY: 16,
ECANCELED: 105,
ECHILD: 10,
ECONNABORTED: 106,
ECONNREFUSED: 107,
ECONNRESET: 108,
EDEADLK: 36,
EDESTADDRREQ: 109,
EDOM: 33,
EEXIST: 17,
EFAULT: 14,
EFBIG: 27,
EHOSTUNREACH: 110,
EIDRM: 111,
EILSEQ: 42,
EINPROGRESS: 112,
EINTR: 4,
EINVAL: 22,
EIO: 5,
EISCONN: 113,
EISDIR: 21,
ELOOP: 114,
EMFILE: 24,
EMLINK: 31,
EMSGSIZE: 115,
ENAMETOOLONG: 38,
ENETDOWN: 116,
ENETRESET: 117,
ENETUNREACH: 118,
ENFILE: 23,
ENOBUFS: 119,
ENODATA: 120,
ENODEV: 19,
ENOENT: 2,
ENOEXEC: 8,
ENOLCK: 39,
ENOLINK: 121,
ENOMEM: 12,
ENOMSG: 122,
ENOPROTOOPT: 123,
ENOSPC: 28,
ENOSR: 124,
ENOSTR: 125,
ENOSYS: 40,
ENOTCONN: 126,
ENOTDIR: 20,
ENOTEMPTY: 41,
ENOTSOCK: 128,
ENOTSUP: 129,
ENOTTY: 25,
ENXIO: 6,
EOPNOTSUPP: 130,
EOVERFLOW: 132,
EPERM: 1,
EPIPE: 32,
EPROTO: 134,
EPROTONOSUPPORT: 135,
EPROTOTYPE: 136,
ERANGE: 34,
EROFS: 30,
ESPIPE: 29,
ESRCH: 3,
ETIME: 137,
ETIMEDOUT: 138,
ETXTBSY: 139,
EWOULDBLOCK: 140,
EXDEV: 18,
WSAEINTR: 10004,
WSAEBADF: 10009,
WSAEACCES: 10013,
WSAEFAULT: 10014,
WSAEINVAL: 10022,
WSAEMFILE: 10024,
WSAEWOULDBLOCK: 10035,
WSAEINPROGRESS: 10036,
WSAEALREADY: 10037,
WSAENOTSOCK: 10038,
WSAEDESTADDRREQ: 10039,
WSAEMSGSIZE: 10040,
WSAEPROTOTYPE: 10041,
WSAENOPROTOOPT: 10042,
WSAEPROTONOSUPPORT: 10043,
WSAESOCKTNOSUPPORT: 10044,
WSAEOPNOTSUPP: 10045,
WSAEPFNOSUPPORT: 10046,
WSAEAFNOSUPPORT: 10047,
WSAEADDRINUSE: 10048,
WSAEADDRNOTAVAIL: 10049,
WSAENETDOWN: 10050,
WSAENETUNREACH: 10051,
WSAENETRESET: 10052,
WSAECONNABORTED: 10053,
WSAECONNRESET: 10054,
WSAENOBUFS: 10055,
WSAEISCONN: 10056,
WSAENOTCONN: 10057,
WSAESHUTDOWN: 10058,
WSAETOOMANYREFS: 10059,
WSAETIMEDOUT: 10060,
WSAECONNREFUSED: 10061,
WSAELOOP: 10062,
WSAENAMETOOLONG: 10063,
WSAEHOSTDOWN: 10064,
WSAEHOSTUNREACH: 10065,
WSAENOTEMPTY: 10066,
WSAEPROCLIM: 10067,
WSAEUSERS: 10068,
WSAEDQUOT: 10069,
WSAESTALE: 10070,
WSAEREMOTE: 10071,
WSASYSNOTREADY: 10091,
WSAVERNOTSUPPORTED: 10092,
WSANOTINITIALISED: 10093,
WSAEDISCON: 10101,
WSAENOMORE: 10102,
WSAECANCELLED: 10103,
WSAEINVALIDPROCTABLE: 10104,
WSAEINVALIDPROVIDER: 10105,
WSAEPROVIDERFAILEDINIT: 10106,
WSASYSCALLFAILURE: 10107,
WSASERVICE_NOT_FOUND: 10108,
WSATYPE_NOT_FOUND: 10109,
WSA_E_NO_MORE: 10110,
WSA_E_CANCELLED: 10111,
WSAEREFUSED: 10112
},
signals: [Object: null prototype] {
SIGHUP: 1,
SIGINT: 2,
SIGILL: 4,
SIGABRT: 22,
SIGFPE: 8,
SIGKILL: 9,
SIGSEGV: 11,
SIGTERM: 15,
SIGBREAK: 21,
SIGWINCH: 28
},
priority: [Object: null prototype] {
PRIORITY_LOW: 19,
PRIORITY_BELOW_NORMAL: 10,
PRIORITY_NORMAL: 0,
PRIORITY_ABOVE_NORMAL: -7,
PRIORITY_HIGH: -14,
PRIORITY_HIGHEST: -20
}
}
plaintext

- release(): os.release()根据uname(unix名称的缩写)返回操作系统版本。
例子:
// importing OS module
const os = require('os');
console.log(os.release());
javascript
输出:
0.22000
plaintext
- uptime(): os.uptime()返回系统正常时间(以秒为单位),即处理器自启动以来已多长时间。
例子:
// importing OS module
const os = require('os');
console.log(os.uptime());
javascript
输出:
1443539
plaintext
- cpus(): os.cpus()返回一个对象数组,其中包含有关每个逻辑 CPU 核心的信息。每个对象都包含模型、速度、用户、系统、空闲等属性。
例子:
// importing OS module
const os = require('os');
// for octa-core system
console.log(os.cpus());
javascript
输出:
[
{
model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
speed: 1800,
times: {
user: 5384812,
nice: 0,
sys: 4951140,
idle: 134356203,
irq: 859734
}
},
{
model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
speed: 1800,
times: {
user: 3554078,
nice: 0,
sys: 2107390,
idle: 139030515,
irq: 80578
}
},
{
model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
speed: 1800,
times: {
user: 7326546,
nice: 0,
sys: 3769968,
idle: 133595484,
irq: 93906
}
},
{
model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
speed: 1800,
times: {
user: 11101218,
nice: 0,
sys: 4512609,
idle: 129078171,
irq: 86281
}
},
{
model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
speed: 1800,
times: {
user: 11299343,
nice: 0,
sys: 4991765,
idle: 128400890,
irq: 86843
}
},
{
model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
speed: 1800,
times: {
user: 4259515,
nice: 0,
sys: 2238671,
idle: 138193781,
irq: 58687
}
},
{
model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
speed: 1800,
times: {
user: 6498359,
nice: 0,
sys: 3771500,
idle: 134422109,
irq: 89781
}
},
{
model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
speed: 1800,
times: {
user: 6292109,
nice: 0,
sys: 2363734,
idle: 136036140,
irq: 62859
}
}
]
plaintext

- networkInterfaces(): os.networkInterfaces()返回一个对象,其中包含已分配给网络地址的网络接口信息。每个网络地址对象包括以下属性:地址、网络掩码、系列(即 IPv4 或 IPv6)、mac 等。
例子:
// importing OS module
const os = require('os');
console.log(os.networkInterfaces());
javascript
输出:
{
lo: [
{
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'
}
],
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',
scopeid: 1,
internal: false,
cidr: 'fe80::a00:27ff:fe4e:66a1/64'
}
]
}
plaintext

- platform(): os.platform()返回编译 Node.js 二进制文件的操作系统平台。根据操作系统的不同,返回值可以是以下任意值:'aix'、'darwin'、'freebsd'、'linux'、'openbsd'、'sunos' 和 'win32'。该值是在编译时设置的。
例子:
// importing OS module
const os = require('os');
// for Windows OS
console.log(os.platform());
javascript
输出:
win32
plaintext
结论
- Node.js 中的 OS 模块提供有关操作系统的信息,并帮助用户与操作系统交互。
- os 模块提供 API 用于检索有关硬件相关组件(如CPU、内存、目录、IP 地址等)的 信息。
- os.EOL是一个常量,它返回Node.js程序的操作系统指定的行尾标记。
- OS 模块有多种方法来获取有关操作系统的信息,例如:
- type(): 给出操作系统名称。
- arch(): 给出操作系统CPU架构。
- loadavg(): 给出操作系统计算的系统活动的度量。
- hostname(): 给出操作系统的主机名。
- Totalmem(): 给出系统总内存(以字节为单位)。
- freemem(): 给出空闲(未使用)的系统内存(以字节为单位)。
