- assert - 断言
- async_hooks - 异步钩子
- Buffer - 缓冲器
- child_process - 子进程
- cluster - 集群
- console - 控制台
- crypto - 加密
- debugger - 调试器
- dgram - 数据报
- dns - 域名服务器
- domain - 域
- Error - 异常
- events - 事件触发器
- fs - 文件系统
- global - 全局变量
- http - HTTP
- http2 - HTTP/2
- https - HTTPS
- inspector - 检查器
- module - 模块
- net - 网络
- os - 操作系统
- path - 路径
- perf_hooks - 性能钩子
- process - 进程
- punycode - 域名代码
- querystring - 查询字符串
- readline - 逐行读取
- repl - 交互式解释器
- stream - 流
- string_decoder - 字符串解码器
- timer - 定时器
- tls - 安全传输层
- trace_events - 跟踪事件
- tty - 终端
- url - URL
- util - 实用工具
- v8 - V8引擎
- vm - 虚拟机
- worker_threads - 工作线程
- zlib - 压缩
Node.js v12.9.0 文档
目录
os(操作系统)#
os
模块提供了操作系统相关的实用方法。
使用方法如下:
const os = require('os');
os.EOL#
一个字符串常量,定义操作系统相关的行末标志:
\n
在 POSIX 系统上。\r\n
在 Windows 系统上。
os.arch()#
- 返回: <string>
os.arch()
方法返回一个字符串,表明 Node.js 二进制编译所用的操作系统 CPU 架构。
现在可能的值有:'arm'
、 'arm64'
、 'ia32'
、 'mips'
、 'mipsel'
、 'ppc'
、 'ppc64'
、 's390'
、 's390x'
、 'x32'
、 'x64'
。
等价于 process.arch
。
os.constants#
返回一个包含错误码,处理信号等通用的操作系统特定常量的对象。 现在,这些特定的常量的定义被描述在 [OS 常量][_os_constants]。
os.cpus()#
- 返回: <Object[]>
os.cpus()
方法返回一个对象数组,包含每个逻辑 CPU 内核的信息。
下面的属性包含在每个对象中:
[
{
model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times: {
user: 252020,
nice: 0,
sys: 30340,
idle: 1070356870,
irq: 0
}
},
{
model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times: {
user: 306960,
nice: 0,
sys: 26980,
idle: 1071569080,
irq: 0
}
},
{
model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times: {
user: 248450,
nice: 0,
sys: 21750,
idle: 1070919370,
irq: 0
}
},
{
model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times: {
user: 256880,
nice: 0,
sys: 19430,
idle: 1070905480,
irq: 20
}
},
{
model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times: {
user: 511580,
nice: 20,
sys: 40900,
idle: 1070842510,
irq: 0
}
},
{
model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times: {
user: 291660,
nice: 0,
sys: 34360,
idle: 1070888000,
irq: 10
}
},
{
model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times: {
user: 308260,
nice: 0,
sys: 55410,
idle: 1071129970,
irq: 880
}
},
{
model: 'Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz',
speed: 2926,
times: {
user: 266450,
nice: 1480,
sys: 34920,
idle: 1072572010,
irq: 30
}
}
]
因为 nice
的值是 UNIX 相关的,在 Windows 系统上所有处理器的 nice
值总是 0。
os.endianness()#
- 返回: <string>
os.endianness()
方法返回一个字符串,表明 Node.js 二进制编译环境的字节顺序。
可能的值:
'BE'
大端模式。'LE'
小端模式。
os.freemem()#
- 返回: <integer>
os.freemem()
方法以整数的形式回空闲系统内存的字节数。
os.getPriority([pid])#
os.getPriority()
方法返回由 pid
指定的进程的调度优先级。
如果未提供 pid
或者为 0
,则返回当前进程的优先级。
os.homedir()#
- 返回: <string>
os.homedir()
方法以字符串的形式返回当前用户的主目录。
在 POSIX 上:
如果定义,则将会使用 $HOME
环境变量。
否则,将会使用有效的 UID 来查找用户的主目录。
在 Windows 上:
如果定义,则将会使用 USERPROFILE
环境变量。
否则,将会是当前用户的配置文件目录的路径。
os.hostname()#
- 返回: <string>
os.hostname()
方法以字符串的形式返回操作系统的主机名。
os.loadavg()#
- 返回: <number[]>
os.loadavg()
方法返回一个数组,包含 1、5 和 15 分钟平均负载。
平均负载是系统活动的测量,由操作系统计算得出,表达为一个分数。 一般来说,平均负载应该理想地比系统的逻辑 CPU 的数目要少。
平均负载是 UNIX 相关的概念,在 Windows 平台上没有对应的概念。
在 Windows 上,其返回值总是 [0, 0, 0]
。
os.networkInterfaces()#
- 返回: <Object>
os.networkInterfaces()
方法返回一个对象,包含只有被赋予网络地址的网络接口。
在返回对象的每个关键词都指明了一个网络接口。 返回的值是一个对象数组,每个都描述了赋予的网络地址。
被赋予网络地址的对象包含的属性:
address
<string> 被赋予的 IPv4 或 IPv6 地址。netmask
<string> IPv4 或 IPv6 子网掩码。family
<string>IPv4
或IPv6
。mac
<string> 网络接口的 MAC 地址。internal
<boolean> 如果网络接口是 loopback 或相似的远程不能用的接口时,值为true
,否则为false
。scopeid
<number> IPv6 数字领域识别码(只有当family
是IPv6
时可用)。cidr
<string> 以 CIDR 表示法分配的带有路由前缀的 IPv4 或 IPv6 地址。如果netmask
参数不可用,则该属性是null
。
{
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'
}
]
}
os.platform()#
- 返回: <string>
os.platform()
方法返回一个字符串,指定 Node.js 编译时的操作系统平台。
当前可能的值有:
'aix'
'darwin'
'freebsd'
'linux'
'openbsd'
'sunos'
'win32'
等价于 process.platform
。
如果 Node.js 在 Android 操作系统上构建,则可能返回 'android'
值。
但是,Node.js 中的 Android 支持目前被视为是试验的。
os.release()#
- 返回: <string>
os.release()
方法返回一个字符串,指定操作系统的发行版。
在 POSIX 系统上,操作系统发行版是通过调用 uname(3)
得到的。
在 Windows 系统上, 则使用 GetVersionExW()
。
详见 https://en.wikipedia.org/wiki/Uname#Examples 。
os.setPriority([pid, ]priority)#
os.setPriority()
方法尝试为 pid
指定的进程设置调度优先级。
如果未提供 pid
或者为 0
,则使用当前进程的优先级。
priority
输入必须是 -20
(高优先级)和 19
(低优先级)之间的整数。
由于 Unix 优先级和 Windows 优先级之间的差异, priority
会被映射到 os.constants.priority
中的六个优先级常量之一。
当检索进程优先级时,此范围的映射可能导致 Windows 上的返回值略有不同。
为避免混淆,建议将 priority
设置为其中一个优先级常量。
在 Windows 上设置优先级为 PRIORITY_HIGHEST
需要提升用户,否则设置优先级将静默地降低到 PRIORITY_HIGH
。
os.tmpdir()#
- 返回: <string>
os.tmpdir()
方法返回一个字符串,表明操作系统的默认临时文件目录。
os.totalmem()#
- 返回: <integer>
os.totalmem()
方法以整数的形式返回所有系统内存的字节数。
os.type()#
- 返回: <string>
os.type()
方法返回一个字符串,表明由 uname(3)
返回的操作系统的名字。
例如,在 Linux 系统上是 'Linux'
,在 macOS 系统上是 'Darwin'
,在 Windows 系统上是 'Windows_NT'
。
请查看 https://en.wikipedia.org/wiki/Uname#Examples 获取其他关于在不同操作系统上执行 uname(3)
得到输出的信息。
os.uptime()#
- 返回: <integer>
os.uptime()
方法以秒为单位返回系统正常运行时间。
os.userInfo([options])#
-
options
<Object>encoding
<string> 用于解释结果字符串的字符编码。如果encoding
被设置为'buffer'
,则username
、shell
和homedir
的值将会是Buffer
实例。默认值:'utf8'
。
- 返回: <Object>
os.userInfo()
方法返回当前有效用户的信息。
在 POSIX 平台上,这通常是密码文件的子集。
返回的对象包括 username
、 uid
、 gid
、 shell
和 homedir
。
在 Windows 系统上,则 uid
和 gid
字段是 -1
,且 shell
是 null
。
os.userInfo()
返回的 homedir
的值由操作系统提供。
这与 os.homedir()
的结果不同,其是在回退到操作系统响应之前查询主目录的几个环境变量。
如果用户没有 username
或 homedir
,则抛出 SystemError
。
OS 常量#
下面的常量被 os.constants
所输出。
并不是所有的常量在每一个操作系统上都是可用的。
信号常量#
下面的信号常量由 os.constants.signals
导出:
常量 | 描述 |
---|---|
SIGHUP |
发送来表明当一个控制终端关闭或者是父进程退出。 |
SIGINT | 发送来表明当一个用户期望中断一个进程时。((Ctrl+C) ). |
SIGQUIT |
发送来表明当一个用户希望终止一个进程并且执行核心转储。 |
SIGILL |
发送给一个进程来通知它已经试图执行一个非法的、畸形的、未知的或特权的指令. |
SIGTRAP |
发送给一个进程当异常已经发生。 |
SIGABRT |
发送给一个进程来请求终止。 |
SIGIOT |
SIGABRT 的同义词 |
SIGBUS |
发送给一个进程来通知它已经造成了总线错误。 |
SIGFPE |
发送给一个进程来通知它已经执行了一个非法的算术操作。 |
SIGKILL |
发送给一个进程来立即终止它。 |
SIGUSR1 SIGUSR2 |
发送给一个进程来确定它的用户定义情况。 |
SIGSEGV |
发送给一个进程来通知段错误。 |
SIGPIPE |
发送给一个进程当它试图写入一个非连接的管道时。 |
SIGALRM |
发送给一个进程当系统时钟消逝时。 |
SIGTERM |
发送给一个进程来请求终止。 |
SIGCHLD |
发送给一个进程当一个子进程终止时。 |
SIGSTKFLT |
发送给一个进程来表明一个协处理器的栈错误。 |
SIGCONT |
发送来通知操作系统继续一个暂停的进程。 |
SIGSTOP |
发送来通知操作系统暂停一个进程。 |
SIGTSTP |
发送给一个进程来请求它停止。 |
SIGBREAK |
发送来表明当一个用户希望终止一个进程。 |
SIGTTIN |
发送给一个进程当它在后台读取 TTY 时。 |
SIGTTOU |
发送给一个进程当它在后台写入 TTY 时。 |
SIGURG |
发送给一个进程当 socket 有紧急的数据需要读取时。 |
SIGXCPU |
发送给一个进程当它超过他在 CPU 使用上的限制时。 |
SIGXFSZ |
发送给一个进程当它使文件成长地比最大允许的值还大时。 |
SIGVTALRM |
发送给一个进程当一个虚拟时钟消逝时。 |
SIGPROF |
发送给一个进程当一个系统时钟消逝时。 |
SIGWINCH |
发送给一个进程当控制终端改变它的大小。 |
SIGIO |
发送给一个进程当 I/O 可用时。 |
SIGPOLL |
SIGIO 的同义词 |
SIGLOST |
发送给一个进程当文件锁丢失时。 |
SIGPWR |
发送给一个进程来通知功率错误。 |
SIGINFO |
SIGPWR 的同义词 |
SIGSYS |
发送给一个进程来通知有错误的参数。 |
SIGUNUSED |
SIGSYS 的同义词 |
错误常量#
下面的错误常量由 os.constants.errno
给出:
POSIX 错误常量#
常量 | 描述 |
---|---|
E2BIG |
表明参数列表比期望的要长。 |
EACCES |
表明操作没有足够的权限。 |
EADDRINUSE |
表明该网络地址已经在使用。 |
EADDRNOTAVAIL |
表明该网络地址当前不能使用。 |
EAFNOSUPPORT |
表明该网络地址簇不被支持。 |
EAGAIN |
表明当前没有可用数据,稍后再次尝试操作。 |
EALREADY |
表明 socket 有一个即将发生的连接在进行中。 |
EBADF |
表明一个文件描述符不可用。 |
EBADMSG |
表明一个无效的数据信息。 |
EBUSY |
表明一个设备或资源处于忙碌中。 |
ECANCELED |
表明一个操作被取消。 |
ECHILD |
表明没有子进程。 |
ECONNABORTED |
表明网络连接已经被终止。 |
ECONNREFUSED |
表明网络连接被拒绝。 |
ECONNRESET |
表明网络连接被重置。 |
EDEADLK |
表明一个资源死锁已经被避免。 |
EDESTADDRREQ |
表明需要目的地址。 |
EDOM |
表明参数超过了函数的作用域。 |
EDQUOT |
表明已经超过磁盘指标。 |
EEXIST |
表明文件已经存在。 |
EFAULT |
表明一个无效的指针地址。 |
EFBIG |
表明文件太大。 |
EHOSTUNREACH |
表明主机不可达。 |
EIDRM |
表明识别码已经被移除。 |
EILSEQ |
表明一个非法的字节序。 |
EINPROGRESS |
表明一个操作已经在进行中。 |
EINTR |
表明一个函数调用被中断。 |
EINVAL |
表明提供了一个无效的参数。 |
EIO |
表明一个其他的不确定的 I/O 错误。 |
EISCONN |
表明 socket 已经连接。 |
EISDIR |
表明路径是目录。 |
ELOOP |
表明路径上有太多层次的符号连接。 |
EMFILE |
表明有太多打开的文件。 |
EMLINK |
表明文件上有太多的硬连接。 |
EMSGSIZE |
表明提供的信息太长。 |
EMULTIHOP |
表明多跳被尝试。 |
ENAMETOOLONG |
表明文件名太长。 |
ENETDOWN |
表明网络关闭。 |
ENETRESET |
表明连接被网络终止。 |
ENETUNREACH |
表明网络不可达。 |
ENFILE |
表明系统中打开了太多的文件。 |
ENOBUFS |
表明没有有效的缓存空间。 |
ENODATA |
表明在流头读取队列上没有可用的信息。 |
ENODEV |
表明没有这样的设备。 |
ENOENT |
表明没有这样的文件或目录。 |
ENOEXEC |
表明一个执行格式错误。 |
ENOLCK |
表明没有可用的锁。 |
ENOLINK |
表明链接在服务。 |
ENOMEM |
表明没有足够的空间。 |
ENOMSG |
表明想要的数据类型没有信息。 |
ENOPROTOOPT |
表明给定的协议不可用。 |
ENOSPC |
表明该设备上没有可用的空间。 |
ENOSR |
表明没有可用的流资源。 |
ENOSTR |
表明给定的资源不是流。 |
ENOSYS |
表明功能没有被实现。 |
ENOTCONN |
表明 socket 没有连接。 |
ENOTDIR |
表明路径不是目录。 |
ENOTEMPTY |
表明目录是非空的。 |
ENOTSOCK |
表明给定的项目不是 socket。 |
ENOTSUP |
表明给定的操作不受支持。 |
ENOTTY |
表明一个不适当的 I/O 控制操作。 |
ENXIO |
表明没有该设备或地址。 |
EOPNOTSUPP |
表明一个操作不被 socket 所支持。
尽管 ENOTSUP 和 EOPNOTSUPP 在 Linux 上有相同的值,但是根据 POSIX.1 规范,这些错误值应该不同。 |
EOVERFLOW |
表明一个值太大以至于难以用给定的数据类型存储。 |
EPERM |
表明操作没有被许可。 |
EPIPE |
表明破裂的管道。 |
EPROTO |
表明协议错误。 |
EPROTONOSUPPORT |
表明一个协议不被支持。 |
EPROTOTYPE |
表明 socket 错误的协议类型。 |
ERANGE |
表明结果太大了。 |
EROFS |
表明该文件系统是只读的。 |
ESPIPE |
表明无效的查询操作。 |
ESRCH |
表明没有这样的进程。 |
ESTALE |
表明该文件处理是稳定的。 |
ETIME |
表明一个过期的时钟。 |
ETIMEDOUT |
表明该连接超时。 |
ETXTBSY |
表明一个文本文件处于忙碌。 |
EWOULDBLOCK |
表明该操作被屏蔽。 |
EXDEV |
表明一个不合适的连接。 |
Windows 系统特有的错误常量#
下面的错误码与 Windows 系统相关:
常量 | 描述 |
---|---|
WSAEINTR |
表明中断的函数调用。 |
WSAEBADF |
表明一个无效的文件句柄。 |
WSAEACCES |
表明权限不够完成操作。 |
WSAEFAULT |
表明无效的指针地址。 |
WSAEINVAL |
表明无效的参数被传递。 |
WSAEMFILE |
表明有太多打开的文件。 |
WSAEWOULDBLOCK |
表明资源暂时不可用。 |
WSAEINPROGRESS |
表明操作当前正在进行中。 |
WSAEALREADY |
表明操作已经在进行中。 |
WSAENOTSOCK |
表明资源不是 socket。 |
WSAEDESTADDRREQ |
表明需要目的地址。 |
WSAEMSGSIZE |
表明消息太长。 |
WSAEPROTOTYPE |
表明 socket 协议类型错误。 |
WSAENOPROTOOPT |
表明错误的协议选项。 |
WSAEPROTONOSUPPORT |
表明协议不被支持。 |
WSAESOCKTNOSUPPORT |
表明 socket 类型不被支持。 |
WSAEOPNOTSUPP |
表明操作不被支持。 |
WSAEPFNOSUPPORT |
表明协议簇不被支持。 |
WSAEAFNOSUPPORT |
表明地址簇不被支持。 |
WSAEADDRINUSE |
表明网络地址已经在使用。 |
WSAEADDRNOTAVAIL |
表明网络地址不可用。 |
WSAENETDOWN |
表明网络关闭。 |
WSAENETUNREACH |
表明网络不可达。 |
WSAENETRESET |
表明网络连接被重置。 |
WSAECONNABORTED |
表明连接被终止。 |
WSAECONNRESET |
表明连接被同伴重置。 |
WSAENOBUFS |
表明没有可用的缓存空间。 |
WSAEISCONN |
表明 socket 已经连接。 |
WSAENOTCONN |
表明 socket 没有连接。 |
WSAESHUTDOWN |
表明数据在 socket 关闭之后,不能被发送。 |
WSAETOOMANYREFS |
表明有太多的引用。 |
WSAETIMEDOUT |
表明连接超时。 |
WSAECONNREFUSED |
表明连接被拒绝。 |
WSAELOOP |
表明名字不能被翻译。 |
WSAENAMETOOLONG |
表明名字太长。 |
WSAEHOSTDOWN |
表明网络主机关闭。 |
WSAEHOSTUNREACH |
表明没有到网络主机的路由。 |
WSAENOTEMPTY |
表明目录非空。 |
WSAEPROCLIM |
表明有太多的进程。 |
WSAEUSERS |
表明已经超过用户指标。 |
WSAEDQUOT |
表明已经超过磁盘指标。 |
WSAESTALE |
表明一个稳定的文件句柄引用。 |
WSAEREMOTE |
表明项目是远程的。 |
WSASYSNOTREADY |
表明网络子系统尚未准备好。 |
WSAVERNOTSUPPORTED |
表明 winsock.dll 版本在范围之外。 |
WSANOTINITIALISED |
表明成功的 WSAStartup 还没有被执行。 |
WSAEDISCON |
表明一个优雅的关机正在进行。 |
WSAENOMORE |
表明没有更多的结果。 |
WSAECANCELLED |
表明一个操作已经被取消。 |
WSAEINVALIDPROCTABLE |
表明过程调用表是无效的。 |
WSAEINVALIDPROVIDER |
表明无效的服务提供者。 |
WSAEPROVIDERFAILEDINIT |
表明服务提供者初始化失败。 |
WSASYSCALLFAILURE |
表明系统调用失败。 |
WSASERVICE_NOT_FOUND |
表明服务没有被找到。 |
WSATYPE_NOT_FOUND |
表明类类型没有被找到。 |
WSA_E_NO_MORE |
表明没有更多的结果。 |
WSA_E_CANCELLED |
表明调用被取消。 |
WSAEREFUSED |
表明数据库请求被拒绝。 |
dlopen 常量#
如果在操作系统上可用,则以下常量在 os.constants.dlopen
中导出。
有关详细信息,请参阅 dlopen(3)
信息。
常量 | 描述 |
---|---|
RTLD_LAZY |
执行延迟绑定。 Node.js 默认设置此标志。 |
RTLD_NOW |
在 dlopen(3) 返回之前解析库中的所有未定义符号。 |
RTLD_GLOBAL |
库定义的符号将可用于后续加载的库的符号解析。 |
RTLD_LOCAL |
与 RTLD_GLOBAL 相反。 如果未指定任何标志,则这是默认行为。 |
RTLD_DEEPBIND |
使一个独立的库使用自己的符号,而不是先前加载的库中的符号。 |
优先级常量#
以下进程调度常量由 os.constants.priority
导出:
常量 | 描述 |
---|---|
PRIORITY_LOW |
最低进程调度优先级。这与 Windows 上的 IDLE_PRIORITY_CLASS 相对应,在所有其他平台上的值为 19 。 |
PRIORITY_BELOW_NORMAL |
进程调度优先级高于 PRIORITY_LOW 且低于 PRIORITY_NORMAL 。这对应于 Windows 上的 PRIORITY_NORMAL ,并且在所有其他平台上的值为 10 。 |
PRIORITY_NORMAL |
默认的进程调度优先级。这对应于 Windows 上的 NORMAL_PRIORITY_CLASS ,并且在所有其他平台上的值为 0 。 |
PRIORITY_ABOVE_NORMAL |
进程调度优先级高于 PRIORITY_NORMAL 且低于 PRIORITY_HIGH 。这对应于 Windows 上的 ABOVE_NORMAL_PRIORITY_CLASS ,并且在所有其他平台上的值为 -7 。 |
PRIORITY_HIGH |
进程调度优先级高于 PRIORITY_ABOVE_NORMAL 且低于 PRIORITY_ABOVE_NORMAL 。这对应于 Windows 上的 HIGH_PRIORITY_CLASS ,并且在所有其他平台上的值为 -14 。 |
PRIORITY_HIGHEST |
最高进程调度优先级。 这对应于 Windows 上的 REALTIME_PRIORITY_CLASS ,在所有其他平台上的值为 -20 。 |
libuv 常量#
常量 | 描述 |
---|---|
UV_UDP_REUSEADDR |