Node.js v12.10.0 文档


os(操作系统)#

中英对照提交修改

稳定性: 2 - 稳定

os 模块提供了操作系统相关的实用方法。 使用方法如下:

const os = require('os');

os.EOL#

中英对照提交修改

一个字符串常量,定义操作系统相关的行末标志:

  • \n 在 POSIX 系统上。
  • \r\n 在 Windows 系统上。

os.arch()#

中英对照提交修改

os.arch() 方法返回一个字符串,表明 Node.js 二进制编译所用的操作系统 CPU 架构。

现在可能的值有:'arm''arm64''ia32''mips''mipsel''ppc''ppc64''s390''s390x''x32''x64'

等价于 process.arch

os.constants#

中英对照提交修改

返回一个包含错误码,处理信号等通用的操作系统特定常量的对象。 现在,这些特定的常量的定义被描述在 OS 常量

os.cpus()#

中英对照提交修改

os.cpus() 方法返回一个对象数组,包含每个逻辑 CPU 内核的信息。

下面的属性包含在每个对象中:

  • model <string>
  • speed <number> 以兆赫兹为单位。
  • times <Object>

    • user <number> CPU 花费在用户模式下的毫秒时间数。
    • nice <number> CPU 花费在良好模式下的毫秒时间数。
    • sys <number> CPU 花费在系统模式下的毫秒时间数。
    • idle <number> CPU 花费在空闲模式下的毫秒时间数。
    • irq <number> 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()#

中英对照提交修改

os.endianness() 方法返回一个字符串,表明 Node.js 二进制编译环境的字节顺序。

可能的值:

  • 'BE' 大端模式。
  • 'LE' 小端模式。

os.freemem()#

中英对照提交修改

os.freemem() 方法以整数的形式回空闲系统内存的字节数。

os.getPriority([pid])#

中英对照提交修改

  • pid <integer> 用于检索调度优先级的进程 ID。默认值 0
  • 返回: <integer>

os.getPriority() 方法返回由 pid 指定的进程的调度优先级。 如果未提供 pid 或者为 0,则返回当前进程的优先级。

os.homedir()#

中英对照提交修改

os.homedir() 方法以字符串的形式返回当前用户的主目录。

在 POSIX 上: 如果定义,则将会使用 $HOME 环境变量。 否则,将会使用有效的 UID 来查找用户的主目录。

在 Windows 上: 如果定义,则将会使用 USERPROFILE 环境变量。 否则,将会是当前用户的配置文件目录的路径。

os.hostname()#

中英对照提交修改

os.hostname() 方法以字符串的形式返回操作系统的主机名。

os.loadavg()#

中英对照提交修改

os.loadavg() 方法返回一个数组,包含 1、5 和 15 分钟平均负载。

平均负载是系统活动的测量,由操作系统计算得出,表达为一个分数。 一般来说,平均负载应该理想地比系统的逻辑 CPU 的数目要少。

平均负载是 UNIX 相关的概念,在 Windows 平台上没有对应的概念。 在 Windows 上,其返回值总是 [0, 0, 0]

os.networkInterfaces()#

中英对照提交修改

os.networkInterfaces() 方法返回一个对象,包含只有被赋予网络地址的网络接口。

在返回对象的每个关键词都指明了一个网络接口。 返回的值是一个对象数组,每个都描述了赋予的网络地址。

被赋予网络地址的对象包含的属性:

  • address <string> 被赋予的 IPv4 或 IPv6 地址。
  • netmask <string> IPv4 或 IPv6 子网掩码。
  • family <string> IPv4IPv6
  • mac <string> 网络接口的 MAC 地址。
  • internal <boolean> 如果网络接口是 loopback 或相似的远程不能用的接口时,值为 true,否则为 false
  • scopeid <number> IPv6 数字领域识别码(只有当 familyIPv6 时可用)。
  • 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()#

中英对照提交修改

os.platform() 方法返回一个字符串,指定 Node.js 编译时的操作系统平台。

当前可能的值有:

  • 'aix'
  • 'darwin'
  • 'freebsd'
  • 'linux'
  • 'openbsd'
  • 'sunos'
  • 'win32'

等价于 process.platform

如果 Node.js 在 Android 操作系统上构建,则可能返回 'android' 值。 但是,Node.js 中的 Android 支持目前被视为是试验的

os.release()#

中英对照提交修改

os.release() 方法返回一个字符串,指定操作系统的发行版。

在 POSIX 系统上,操作系统发行版是通过调用 uname(3) 得到的。 在 Windows 系统上, 则使用 GetVersionExW()。 详见 https://en.wikipedia.org/wiki/Uname#Examples

os.setPriority([pid, ]priority)#

中英对照提交修改

  • pid <integer> 为其设置调度优先级的进程 ID。默认值 0
  • priority <integer> 分配给进程的调度优先级。

os.setPriority() 方法尝试为 pid 指定的进程设置调度优先级。 如果未提供 pid 或者为 0,则使用当前进程的优先级。

priority 输入必须是 -20(高优先级)和 19(低优先级)之间的整数。 由于 Unix 优先级和 Windows 优先级之间的差异, priority 会被映射到 os.constants.priority 中的六个优先级常量之一。 当检索进程优先级时,此范围的映射可能导致 Windows 上的返回值略有不同。 为避免混淆,建议将 priority 设置为其中一个优先级常量。

在 Windows 上设置优先级为 PRIORITY_HIGHEST 需要提升用户,否则设置优先级将静默地降低到 PRIORITY_HIGH

os.tmpdir()#

中英对照提交修改

os.tmpdir() 方法返回一个字符串,表明操作系统的默认临时文件目录。

os.totalmem()#

中英对照提交修改

os.totalmem() 方法以整数的形式返回所有系统内存的字节数。

os.type()#

中英对照提交修改

os.type() 方法返回一个字符串,表明由 uname(3) 返回的操作系统的名字。 例如,在 Linux 系统上是 'Linux',在 macOS 系统上是 'Darwin',在 Windows 系统上是 'Windows_NT'

请查看 https://en.wikipedia.org/wiki/Uname#Examples 获取其他关于在不同操作系统上执行 uname(3) 得到输出的信息。

os.uptime()#

中英对照提交修改

os.uptime() 方法以秒为单位返回系统正常运行时间。

os.userInfo([options])#

中英对照提交修改

  • options <Object>

    • encoding <string> 用于解释结果字符串的字符编码。如果 encoding 被设置为 'buffer',则 usernameshellhomedir 的值将会是 Buffer 实例。默认值: 'utf8'
  • 返回: <Object>

os.userInfo() 方法返回当前有效用户的信息。 在 POSIX 平台上,这通常是密码文件的子集。 返回的对象包括 usernameuidgidshellhomedir。 在 Windows 系统上,则 uidgid 字段是 -1,且 shellnull

os.userInfo() 返回的 homedir 的值由操作系统提供。 这与 os.homedir() 的结果不同,其是在回退到操作系统响应之前查询主目录的几个环境变量。

如果用户没有 usernamehomedir,则抛出 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 所支持。 尽管 ENOTSUPEOPNOTSUPP 在 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