os(操作系统)#

稳定性: 2 - 稳定

源代码: lib/os.js

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

const os = require('os');

os.EOL#

操作系统特定的行末标志。

  • 在 POSIX 上是 \n
  • 在 Windows 上是 \r\n

os.arch()#

返回为其编译 Node.js 二进制文件的操作系统的 CPU 架构。 可能的值有:'arm''arm64''ia32''mips''mipsel''ppc''ppc64''s390''s390x''x32''x64'

返回的值等价于 process.arch

os.constants#

包含错误码、进程信号等常用的操作系统特定的常量。 定义的特定常量在 OS 常量中描述。

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

nice 的值仅适用于 POSIX。 在 Windows 上,所有处理器的 nice 值始终为 0。

os.endianness()#

返回一个字符串,该字符串标识为其编译 Node.js 二进制文件的 CPU 的字节序。

可能的值有, 'BE' 用于大端字节序, 'LE' 用于小端字节序。

os.freemem()#

以整数的形式返回空闲的系统内存量(以字节为单位)。

os.getPriority([pid])#

  • pid <integer> 要为其获取调度优先级的进程 ID。默认值 0
  • 返回: <integer>

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

os.homedir()#

返回当前用户的主目录的字符串路径。

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

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

os.hostname()#

以字符串的形式返回操作系统的主机名。

os.loadavg()#

返回一个数组,包含 1、5 和 15 分钟的平均负载。

平均负载是系统活动性的测量,由操作系统计算得出,并表现为一个分数。

平均负载是 UNIX 特定的概念。 在 Windows 上,其返回值始终为 [0, 0, 0]

os.networkInterfaces()#

返回一个对象,该对象包含已分配了网络地址的网络接口。

返回的对象上的每个键都标识了一个网络接口。 关联的值是一个对象数组,每个对象描述了一个分配的网络地址。

分配的网络地址的对象上可用的属性包括:

  • address <string> 分配的 IPv4 或 IPv6 地址。
  • netmask <string> IPv4 或 IPv6 的子网掩码。
  • family <string> IPv4IPv6
  • mac <string> 网络接口的 MAC 地址。
  • internal <boolean> 如果网络接口是不可远程访问的环回接口或类似接口,则为 true,否则为 false
  • scopeid <number> 数值型的 IPv6 作用域 ID(仅当 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()#

返回标识操作系统平台的字符串。 该值在编译时设置。 可能的值有 'aix''darwin''freebsd''linux''openbsd''sunos''win32'

返回的值等价于 process.platform

如果 Node.js 在 Android 操作系统上构建,则也可能返回 'android' 值。 Android 的支持是实验性的

os.release()#

以字符串的形式返回操作系统。

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

os.setPriority([pid, ]priority)#

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

尝试为 pid 指定的进程设置调度优先级。 如果未提供 pid 或者为 0,则使用当前进程的进程 ID。

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

在 Windows 上,将优先级设置为 PRIORITY_HIGHEST 需要较高的用户权限。 否则,设置的优先级将会被静默地降低为 PRIORITY_HIGH

os.tmpdir()#

以字符串的形式返回操作系统的默认临时文件目录。

os.totalmem()#

以整数的形式返回系统的内存总量(以字节为单位)。

os.type()#

返回与 uname(3) 返回一样的操作系统名字。 例如,在 Linux 上返回 'Linux',在 macOS 上返回 'Darwin',在 Windows 上返回 'Windows_NT'

有关在各种操作系统上运行 uname(3) 的输出的更多信息,参见 https://en.wikipedia.org/wiki/Uname#Examples

os.uptime()#

返回系统的正常运行时间(以秒为单位)。

os.userInfo([options])#

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

返回关于当前有效用户的信息。 在 POSIX 平台上,这通常是密码文件的子集。 返回的对象包含 usernameuidgidshellhomedir。 在 Windows 上,则 uidgid 字段为 -1,且 shellnull

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

如果用户没有 usernamehomedir,则抛出 SystemError

os.version()#

Returns a string identifying the kernel version.

On POSIX systems, the operating system release is determined by calling uname(3). On Windows, RtlGetVersion() is used, and if it is not available, GetVersionExW() will be used. See https://en.wikipedia.org/wiki/Uname#Examples for more information.

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