Node.js v8.x 中文文档


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 Constants

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花费在中断请求模式下的毫秒时间数.

For example:

[
  {
    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.homedir()#

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

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',
      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()#

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

当前可能的值有:

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

等价于 process.platform.

注意: 如果Node.js 在Android操作系统上构建, 'android'值 可能被返回. 然而, Android支持Node.js在当前被认为是实验期.

os.release()#

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

注意: 在POSIX系统上, 操作系统发行版是通过 调用 uname(3) 得到的. 在 Windows系统上, 用GetVersionExW() . 请查看 https://en.wikipedia.org/wiki/Uname#Examples 获取更多信息.

os.tmpdir()#

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

os.totalmem()#

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

os.type()#

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

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

os.uptime()#

os.uptime() 方法在几秒内返回操作系统的上线时间.

注意:在Windows平台上,这个方法返回的秒值包含分数,请用Math.floor()获取整数值

os.userInfo([options])#

  • options <Object>
    • encoding <string> 用于解释结果字符串的字符编码. 如果encoding 被设置为'buffer', username, shell, 和 homedir 的值将成为 Buffer的实例. (默认是: 'utf8')
  • Returns: <Object>

os.userInfo()方法当前有效用户的信息 -- 在 POSIX平台上, 这通常是password 文件的子集. 返回的对象包括 username, uid, gid, shell, 和 homedir. 在Windows系统上, uidgid 域是 -1, and shellnull.

homedir的值由os.userInfo()返回, 由操作系统提供. 这区别了os.homedir()的结果, 它在求助操作系统响应之前, 为home目录请求几个环境变量.

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(Windows异步socket)还没有被执行 .
WSAEDISCON 表明一个优雅的关机正在进行 .
WSAENOMORE 表明没有更多的结果 .
WSAECANCELLED 表明一个操作已经被取消 .
WSAEINVALIDPROCTABLE 表明过程调用表是无效的 .
WSAEINVALIDPROVIDER 表明无效的服务提供者 .
WSAEPROVIDERFAILEDINIT 表明服务提供者初始化失败 .
WSASYSCALLFAILURE 表明系统调用失败 .
WSASERVICE_NOT_FOUND 表明服务没有被找到 .
WSATYPE_NOT_FOUND 表明类类型没有被找到 .
WSA_E_NO_MORE 表明没有更多的结果 .
WSA_E_CANCELLED 表明调用被取消 .
WSAEREFUSED 表明数据库请求被拒绝 .

libuv 常量#

常量 描述
UV_UDP_REUSEADDR