当前位置: 首页 > 文档资料 > Node.js API 文档 >

OS (操作系统)

优质
小牛编辑
155浏览
2023-12-01

稳定性: 2 - 稳定的
os 模块提供了一些操作系统相关的实用方法。可以这么引用它:

const os = require('os');

os.EOL

新增于: v0.7.8

  • <string>

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

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

os.arch()

新增于: v0.5.0

  • 返回: <string>

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

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

等价于 process.arch.

os.constants

新增于: v6.3.0

  • <Object>

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

os.cpus()

新增于: v0.3.3

  • Returns: <Array>

os.cpus() 方法返回一个对象数组, 包含安装的每个CPU/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()

新增于: v0.9.4

  • Returns: <string>

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

可能的值:

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

os.freemem()

新增于: v0.3.3

  • Returns: <integer>

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

os.homedir()

新增于: v2.3.0

  • Returns: <string>

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

os.hostname()

新增于: v0.3.3

  • Returns: <string>

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

os.loadavg()

新增于: v0.3.3

  • Returns: <Array>

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

平均负载是系统活动的测量,由操作系统计算得出,表达为一个分数. 一般来说,平均负载应该理想地比系统的逻辑CPU的数目要少. 平均负载是UNIX相关的概念,在Windows平台上没有对应的概念. 在Windows上,其返回值总是[0, 0, 0].

os.networkInterfaces()

新增于: v0.6.0

  • Returns: <Object>

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时可用)
{
  lo: [
    {
      address: '127.0.0.1',
      netmask: '255.0.0.0',
      family: 'IPv4',
      mac: '00:00:00:00:00:00',
      internal: true
    },
    {
      address: '::1',
      netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
      family: 'IPv6',
      mac: '00:00:00:00:00:00',
      internal: true
    }
  ],
  eth0: [
    {
      address: '192.168.1.108',
      netmask: '255.255.255.0',
      family: 'IPv4',
      mac: '01:02:03:0a:0b:0c',
      internal: false
    },
    {
      address: 'fe80::a00:27ff:fe4e:66a1',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: '01:02:03:0a:0b:0c',
      internal: false
    }
  ]
}

os.platform()

新增于: v0.5.0

  • Returns: <string>

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

当前可能的值有:

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

等价于 process.platform.

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

os.release()

新增于: v0.3.3

  • Returns: <string>

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

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

os.tmpdir()

版本历史

版本变更
v2.0.0This function is now cross-platform consistent and no longer returns a path with a trailing slash on any platform
v0.9.9新增于: v0.9.9
  • Returns: <string>

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

os.totalmem()

新增于: v0.3.3

  • Returns: <integer>

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

os.type()

新增于: v0.3.3

  • Returns: <string>

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

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

os.uptime()

新增于: v0.3.3

  • Returns: <integer>

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

Note: On Windows the returned value includes fractions of a second. Use Math.floor() to get whole seconds.

os.userInfo([options])

新增于: v6.0.0

  • 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 所输出.

注意: 并不是所有的常量在每一个操作系统上都是可用的.

信号常量

版本历史

版本变更
v5.11.0Added support for SIGINFO.

下面的信号常量由 os.constants.signals 给出:

常量描述
SIGHUP发送来表明当一个控制终端关闭或者是父进程退出.
SIGINT发送来表明当一个用户期望中断一个进程时. ((Ctrl+C)).
SIGQUIT发送来表明当一个用户希望终止一个进程并且执行核心转储.
SIGILL发送给一个进程来通知它已经试图执行一个非法的,畸形的,未知的或特权的指令.
SIGTRAP发送给一个进程当异常已经发生了.
SIGABRT发送给一个进程来请求终止
SIGIOTSIGABRT的同义词
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可用时.
SIGPOLLSIGIO同义词
SIGLOST发送给一个进程当文件锁丢失时.
SIGPWR发送给一个进程来通知功率错误.
SIGINFOSIGPWR同义词
SIGSYS发送给一个进程来通知有错误的参数.
SIGUNUSEDSIGSYS的同义词

错误常量

下面的错误常量由 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