Node.js API 总结之 os 篇

735 阅读5分钟
const os = require('os');
Object.getOwnPropertyNames(os);
  • EOL 操作系统相关行末标志 \n 在POSIX 系统上,\r\n 在 Windows 系统上
  • arch() 操作系统CPU架构,等价于process.arch,取值: 'arm'、'arm64'、'ia32', 'mips'、'mipsel'、'ppc'、'ppc64'、's390'、's390x'、 'x32'、'x64'、 'x86'
  • endianness() 二进制编译环境的字节顺序
    • 'BE' 大端模式
    • 'LE' 小端模式
  • freemem() 空闲的系统内存字节数(整数)
  • homedir() 当前用户的 home 目录,如 '/Users/username'
  • hostname() 操作系统主机名,如 'usernamedeMacBook-Pro.local'
  • loadavg() 1、5、15分钟平均负载,一般少于CPU的数目,如 [ 1.9755859375, 2.13037109375, 2.75 ],Windows上为 [0,0,0]
  • platform() 操作系统平台,等效于 process.platform()'aix'、'darwin'、'freebsd'、'linux'、'openbsd'、'sunos'、'win32'
  • release() 操作系统发行版,如 macos上 '16.7.0',POSIX 系统上通过调用 uname(2) 得到
  • tmpdir() 操作系统临时文件目录
  • totalmem() 所有系统内存的字节数
  • type() 操作系统名,由 uname(2) 返回
  • uptime() 操作系统上线时间
  • userInfo([{encoding: 'buffer|username|shell|homedir']) 当前有效用户的信息,options.encoding 默认为 utf8,除 utf8 以外 value 输出为 buffer 实例
    // MACOS
    { 
    uid: 501, // Windows 上是 -1
    gid: 20, // Windows 上是 -1
    username: 'zhuyudong',
    homedir: '/Users/zhuyudong',
    shell: '/bin/zsh'  // Windows 上是 null
    }
  • cpus() 每个 CPU/CPU 核的信息
    [{ 
    model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
    speed: 2700,  // MHz
    times: { // CPU在各模式下花费的毫秒时间数
      user: 90362040,  // 用户模式
      nice: 0, // 良好模式,只和 UNIX 相关,Windows 上为0
      sys: 74733740, // 系统模式
      idle: 428609030, // 空闲模式
      irq: 0 // 中断请求模式
    } 
    }]
  • networkInterfaces() 赋予网络地址的网络接口,如下
    { 
    lo0: [{ 
      address: '127.0.0.1', // 被赋予的 IPv4 或 IPv6 地址
      netmask: '255.0.0.0', // IPv4 或 IPv6 子网掩码
      family: 'IPv4', // IPv4 或 IPv6
      mac: 'fe:80:00:00:00:00', // 网络接口的 MAC 地址
      internal: true // 如果网络接口是 loopback 或相似的远程不能用的接口时,为 true,否则 false
    }],
    en0: [{ 
      address: 'fe80::4db:eafd:da4d:b912',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: '00:00:00:00:00:00',
      scopeid: 5, // IPv6 数字领域识别码(只有当 family 是 IPv6 时可用)
      internal: false 
    }],
    awdl0: [{ 
      address: 'fe80::e412:aff:fe35:bade',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: 'fe:80:00:00:00:00',
      scopeid: 9,
      internal: false 
    }],
    utun0: [{ 
      address: 'fe80::9723:df9a:2761:f7a7',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: 'fe:80:00:00:00:00',
      scopeid: 11,
      internal: false 
    }],
    utun1: [{ 
      address: 'fe80::8cc6:a82a:8bcd:df0e',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: 'fe:80:00:00:00:00',
      scopeid: 12,
      internal: false 
    }],
    en4: [{ 
      address: 'fe80::3b:160d:fe15:5753',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: '00:00:00:00:00:00',
      scopeid: 4,
      internal: false 
    }]
    }
  • constants 错误码、处理信号等定义常量
{ 
  UV_UDP_REUSEADDR: 4, // libuv 常量
  errno: { 
    E2BIG: 7,
    EACCES: 13,
    EADDRINUSE: 48,
    EADDRNOTAVAIL: 49,
    EAFNOSUPPORT: 47,
    EAGAIN: 35,
    EALREADY: 37,
    EBADF: 9,
    EBADMSG: 94,
    EBUSY: 16,
    ECANCELED: 89,
    ECHILD: 10,
    ECONNABORTED: 53,
    ECONNREFUSED: 61,
    ECONNRESET: 54,
    EDEADLK: 11,
    EDESTADDRREQ: 39,
    EDOM: 33,
    EDQUOT: 69,
    EEXIST: 17,
    EFAULT: 14,
    EFBIG: 27,
    EHOSTUNREACH: 65,
    EIDRM: 90,
    EILSEQ: 92,
    EINPROGRESS: 36,
    EINTR: 4,
    EINVAL: 22,
    EIO: 5,
    EISCONN: 56,
    EISDIR: 21,
    ELOOP: 62,
    EMFILE: 24,
    EMLINK: 31,
    EMSGSIZE: 40,
    EMULTIHOP: 95,
    ENAMETOOLONG: 63,
    ENETDOWN: 50,
    ENETRESET: 52,
    ENETUNREACH: 51,
    ENFILE: 23,
    ENOBUFS: 55,
    ENODATA: 96,
    ENODEV: 19,
    ENOENT: 2,
    ENOEXEC: 8,
    ENOLCK: 77,
    ENOLINK: 97,
    ENOMEM: 12,
    ENOMSG: 91,
    ENOPROTOOPT: 42,
    ENOSPC: 28,
    ENOSR: 98,
    ENOSTR: 99,
    ENOSYS: 78,
    ENOTCONN: 57,
    ENOTDIR: 20,
    ENOTEMPTY: 66,
    ENOTSOCK: 38,
    ENOTSUP: 45,
    ENOTTY: 25,
    ENXIO: 6,
    EOPNOTSUPP: 102,
    EOVERFLOW: 84,
    EPERM: 1,
    EPIPE: 32,
    EPROTO: 100,
    EPROTONOSUPPORT: 43,
    EPROTOTYPE: 41,
    ERANGE: 34,
    EROFS: 30,
    ESPIPE: 29,
    ESRCH: 3,
    ESTALE: 70,
    ETIME: 101,
    ETIMEDOUT: 60,
    ETXTBSY: 26,
    EWOULDBLOCK: 35,
    EXDEV: 18 },
  signals: { 
    SIGHUP: 1,
    SIGINT: 2,
    SIGQUIT: 3,
    SIGILL: 4,
    SIGTRAP: 5,
    SIGABRT: 6,
    SIGIOT: 6,
    SIGBUS: 10,
    SIGFPE: 8,
    SIGKILL: 9,
    SIGUSR1: 30,
    SIGSEGV: 11,
    SIGUSR2: 31,
    SIGPIPE: 13,
    SIGALRM: 14,
    SIGTERM: 15,
    SIGCHLD: 20,
    SIGCONT: 19,
    SIGSTOP: 17,
    SIGTSTP: 18,
    SIGTTIN: 21,
    SIGTTOU: 22,
    SIGURG: 16,
    SIGXCPU: 24,
    SIGXFSZ: 25,
    SIGVTALRM: 26,
    SIGPROF: 27,
    SIGWINCH: 28,
    SIGIO: 23,
    SIGINFO: 29,
    SIGSYS: 12 
  } 
}

// 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    表明数据库请求被拒绝