Advertisement

节点 JS API:Node.Js 中的操作系统 API

阅读量:

概述

当我们在任何技术堆栈中构建应用程序时,有时需要与操作系统进行交互。每个技术堆栈都为我们提供了与操作系统交互的某些方式。Node.js有一个操作系统 API 模块,可以帮助程序员通过他们的程序与操作系统交互。

介绍

我们都知道操作系统 (OS),但无论如何让我们简单地了解一下它。操作系统是为计算机程序提供通用服务的系统软件,同时它还管理计算机的软硬件资源。一些常见的操作系统有 Windows、macOS、Linux 等。

Node.js 还提供通过 OS 模块与 OS(操作系统)交互的工具。

Node JS 中的操作系统模块

Node.js中的 OS 模块建立操作系统和应用程序之间的交互。操作系统模块由某些有助于执行系统相关活动的属性和方法组成。OS 模块向 Node.js 提供有关操作系统的多种信息,例如主机名、可用(未使用)内存、总内存、操作系统名称、用户信息等。

OS模块可以通过所需的功能包含在程序中:

句法:

复制代码
复制代码
    var os = require('OS');
    
    
    javascript

os.EOL 属性

os.EOL 属性返回操作系统特定的行结束标记。行结束标记由它的操作系统指定,例如 Windows 的行结束标记是"\r\n",而 POSIX OS 的行结束标记是"\n"。

演示OS模块OS.EOL属性的程序:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 // printing the return value of OS.EOL
    
 console.log(JSON.stringify(os.EOL));
    
    
    
    
    javascript

输出:

复制代码
复制代码
    "\r\n"
    
    
    plaintext

说明: 由于我在 Windows 操作系统上该程序,因此输出为"\r\n"。在上面程序的打印语句中,我们必须将os.EOL字符串化为 JSON 才能打印os.EOL的字符,否则它只会打印一个空行(行尾)。

OS 模块的方法

与Node.js的其他模块类似,OS模块也提供了一堆方法供我们使用。其中一些解释如下:

  • type(): os.type()方法根据uname(UNIX名称的缩写)返回操作系统名称。例如,它在 Linux 上返回“Linux”,在 macOS 上返回“Darwin”,在 Windows 上返回“Windows_NT”。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 // for windows OS
    
 console.log(os.type());
    
    
    
    
    javascript

输出:

复制代码
复制代码
    Windows_NT
    
    
    plaintext
  • arch(): os.arch()方法返回编译 Node.js 的机器的操作系统 CPU 架构。可能的返回值可以是**'arm'、 'arm64'、 'ia32'、 'mips'、 'mipsel'、 'ppc'、 'ppc64'、 's390'、 's390x' 和 'x64'** 。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 // for windows 64 bit OS
    
 console.log(os.arch());
    
    
    
    
    javascript

输出:

复制代码
复制代码
    x64
    
    
    plaintext
  • loadavg(): os.loadavg()方法返回一个包含1、5和15分钟负载平均值的数组。平均负载是在定义的时间段内系统上的平均系统负载。平均负载对于了解我们的系统性能至关重要。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 // for windows OS
    
 console.log(os.loadavg());
    
    
    
    
    javascript

输出:

复制代码
复制代码
    [ 0, 0, 0 ]
    
    
    plaintext

说明: 平均负载是 Unix 特有的概念。因此在 Windows 上,返回值始终为[0, 0, 0]。

  • hostname(): os.hostname()方法返回操作系统的主机名。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 console.log(os.hostname());
    
    
    
    
    javascript

输出:

复制代码
复制代码
    LAPTOP-HSH4FDK4
    
    
    plaintext
  • Totalmem(): os.totalmem()方法以整数形式返回总系统内存(以字节为单位)。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 console.log(os.totalmem());
    
    
    
    
    javascript

输出:

复制代码
复制代码
    8434331648
    
    
    plaintext
  • freemem(): os.freemem()方法以整数形式返回空闲(可用)系统内存量(以字节为单位)。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 console.log(os.freemem());
    
    
    
    
    javascript

输出:

复制代码
复制代码
    1041686528
    
    
    plaintext
  • 常量: os.constants包含操作系统特定的常量,用于过程信号、错误代码等。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 console.log(os.constants);
    
    
    
    
    javascript

输出:

复制代码
复制代码
    [Object: null prototype] {
      UV_UDP_REUSEADDR: 4,
      dlopen: [Object: null prototype] {},
      errno: [Object: null prototype] {
    E2BIG: 7,
    EACCES: 13,
    EADDRINUSE: 100,
    EADDRNOTAVAIL: 101,
    EAFNOSUPPORT: 102,
    EAGAIN: 11,
    EALREADY: 103,
    EBADF: 9,
    EBADMSG: 104,
    EBUSY: 16,
    ECANCELED: 105,
    ECHILD: 10,
    ECONNABORTED: 106,
    ECONNREFUSED: 107,
    ECONNRESET: 108,
    EDEADLK: 36,
    EDESTADDRREQ: 109,
    EDOM: 33,
    EEXIST: 17,
    EFAULT: 14,
    EFBIG: 27,
    EHOSTUNREACH: 110,
    EIDRM: 111,
    EILSEQ: 42,
    EINPROGRESS: 112,
    EINTR: 4,
    EINVAL: 22,
    EIO: 5,
    EISCONN: 113,
    EISDIR: 21,
    ELOOP: 114,
    EMFILE: 24,
    EMLINK: 31,
    EMSGSIZE: 115,
    ENAMETOOLONG: 38,
    ENETDOWN: 116,
    ENETRESET: 117,
    ENETUNREACH: 118,
    ENFILE: 23,
    ENOBUFS: 119,
    ENODATA: 120,
    ENODEV: 19,
    ENOENT: 2,
    ENOEXEC: 8,
    ENOLCK: 39,
    ENOLINK: 121,
    ENOMEM: 12,
    ENOMSG: 122,
    ENOPROTOOPT: 123,
    ENOSPC: 28,
    ENOSR: 124,
    ENOSTR: 125,
    ENOSYS: 40,
    ENOTCONN: 126,
    ENOTDIR: 20,
    ENOTEMPTY: 41,
    ENOTSOCK: 128,
    ENOTSUP: 129,
    ENOTTY: 25,
    ENXIO: 6,
    EOPNOTSUPP: 130,
    EOVERFLOW: 132,
    EPERM: 1,
    EPIPE: 32,
    EPROTO: 134,
    EPROTONOSUPPORT: 135,
    EPROTOTYPE: 136,
    ERANGE: 34,
    EROFS: 30,
    ESPIPE: 29,
    ESRCH: 3,
    ETIME: 137,
    ETIMEDOUT: 138,
    ETXTBSY: 139,
    EWOULDBLOCK: 140,
    EXDEV: 18,
    WSAEINTR: 10004,
    WSAEBADF: 10009,
    WSAEACCES: 10013,
    WSAEFAULT: 10014,
    WSAEINVAL: 10022,
    WSAEMFILE: 10024,
    WSAEWOULDBLOCK: 10035,
    WSAEINPROGRESS: 10036,
    WSAEALREADY: 10037,
    WSAENOTSOCK: 10038,
    WSAEDESTADDRREQ: 10039,
    WSAEMSGSIZE: 10040,
    WSAEPROTOTYPE: 10041,
    WSAENOPROTOOPT: 10042,
    WSAEPROTONOSUPPORT: 10043,
    WSAESOCKTNOSUPPORT: 10044,
    WSAEOPNOTSUPP: 10045,
    WSAEPFNOSUPPORT: 10046,
    WSAEAFNOSUPPORT: 10047,
    WSAEADDRINUSE: 10048,
    WSAEADDRNOTAVAIL: 10049,
    WSAENETDOWN: 10050,
    WSAENETUNREACH: 10051,
    WSAENETRESET: 10052,
    WSAECONNABORTED: 10053,
    WSAECONNRESET: 10054,
    WSAENOBUFS: 10055,
    WSAEISCONN: 10056,
    WSAENOTCONN: 10057,
    WSAESHUTDOWN: 10058,
    WSAETOOMANYREFS: 10059,
    WSAETIMEDOUT: 10060,
    WSAECONNREFUSED: 10061,
    WSAELOOP: 10062,
    WSAENAMETOOLONG: 10063,
    WSAEHOSTDOWN: 10064,
    WSAEHOSTUNREACH: 10065,
    WSAENOTEMPTY: 10066,
    WSAEPROCLIM: 10067,
    WSAEUSERS: 10068,
    WSAEDQUOT: 10069,
    WSAESTALE: 10070,
    WSAEREMOTE: 10071,
    WSASYSNOTREADY: 10091,
    WSAVERNOTSUPPORTED: 10092,
    WSANOTINITIALISED: 10093,
    WSAEDISCON: 10101,
    WSAENOMORE: 10102,
    WSAECANCELLED: 10103,
    WSAEINVALIDPROCTABLE: 10104,
    WSAEINVALIDPROVIDER: 10105,
    WSAEPROVIDERFAILEDINIT: 10106,
    WSASYSCALLFAILURE: 10107,
    WSASERVICE_NOT_FOUND: 10108,
    WSATYPE_NOT_FOUND: 10109,
    WSA_E_NO_MORE: 10110,
    WSA_E_CANCELLED: 10111,
    WSAEREFUSED: 10112
      },
      signals: [Object: null prototype] {
    SIGHUP: 1,
    SIGINT: 2,
    SIGILL: 4,
    SIGABRT: 22,
    SIGFPE: 8,
    SIGKILL: 9,
    SIGSEGV: 11,
    SIGTERM: 15,
    SIGBREAK: 21,
    SIGWINCH: 28
      },
      priority: [Object: null prototype] {
    PRIORITY_LOW: 19,
    PRIORITY_BELOW_NORMAL: 10,
    PRIORITY_NORMAL: 0,
    PRIORITY_ABOVE_NORMAL: -7,
    PRIORITY_HIGH: -14,
    PRIORITY_HIGHEST: -20
      }
    }
    
    
    plaintext
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/Q2pglHvc9x0yKFLJnom8eEuwXjtd.png)
  • release(): os.release()根据uname(unix名称的缩写)返回操作系统版本。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 console.log(os.release());
    
    
    
    
    javascript

输出:

复制代码
复制代码
0.22000
    
    
    plaintext
  • uptime(): os.uptime()返回系统正常时间(以秒为单位),即处理器自启动以来已多长时间。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 console.log(os.uptime());
    
    
    
    
    javascript

输出:

复制代码
复制代码
    1443539
    
    
    plaintext
  • cpus(): os.cpus()返回一个对象数组,其中包含有关每个逻辑 CPU 核心的信息。每个对象都包含模型、速度、用户、系统、空闲等属性。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 // for octa-core system
    
 console.log(os.cpus());
    
    
    
    
    javascript

输出:

复制代码
复制代码
    [
      {
    model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
    speed: 1800,
    times: {
      user: 5384812,
      nice: 0,
      sys: 4951140,
      idle: 134356203,
      irq: 859734
    }
      },
      {
    model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
    speed: 1800,
    times: {
      user: 3554078,
      nice: 0,
      sys: 2107390,
      idle: 139030515,
      irq: 80578
    }
      },
      {
    model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
    speed: 1800,
    times: {
      user: 7326546,
      nice: 0,
      sys: 3769968,
      idle: 133595484,
      irq: 93906
    }
      },
      {
    model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
    speed: 1800,
    times: {
      user: 11101218,
      nice: 0,
      sys: 4512609,
      idle: 129078171,
      irq: 86281
    }
      },
      {
    model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
    speed: 1800,
    times: {
      user: 11299343,
      nice: 0,
      sys: 4991765,
      idle: 128400890,
      irq: 86843
    }
      },
      {
    model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
    speed: 1800,
    times: {
      user: 4259515,
      nice: 0,
      sys: 2238671,
      idle: 138193781,
      irq: 58687
    }
      },
      {
    model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
    speed: 1800,
    times: {
      user: 6498359,
      nice: 0,
      sys: 3771500,
      idle: 134422109,
      irq: 89781
    }
      },
      {
    model: 'Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz',
    speed: 1800,
    times: {
      user: 6292109,
      nice: 0,
      sys: 2363734,
      idle: 136036140,
      irq: 62859
    }
      }
    ]
    
    
    plaintext
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/1w60Jtr53xHsYIupL9NqWR7KeTZd.png)
  • networkInterfaces(): os.networkInterfaces()返回一个对象,其中包含已分配给网络地址的网络接口信息。每个网络地址对象包括以下属性:地址、网络掩码、系列(即 IPv4 或 IPv6)、mac 等。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 console.log(os.networkInterfaces());
    
    
    
    
    javascript

输出:

复制代码
复制代码
    {
      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'
    }
      ]
    }
    
    
    plaintext
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/YOeBkaG7XnPqyVQilT53cz6fEZFR.png)
  • platform(): os.platform()返回编译 Node.js 二进制文件的操作系统平台。根据操作系统的不同,返回值可以是以下任意值:'aix'、'darwin'、'freebsd'、'linux'、'openbsd'、'sunos' 和 'win32'。该值是在编译时设置的。

例子:

复制代码
复制代码
 // importing OS module

    
 const os = require('os');
    
  
    
 // for Windows OS
    
 console.log(os.platform());
    
    
    
    
    javascript

输出:

复制代码
复制代码
    win32
    
    
    plaintext

结论

  • Node.js 中的 OS 模块提供有关操作系统的信息,并帮助用户与操作系统交互。
  • os 模块提供 API 用于检索有关硬件相关组件(如CPU、内存、目录、IP 地址等)的 信息。
  • os.EOL是一个常量,它返回Node.js程序的操作系统指定的行尾标记。
  • OS 模块有多种方法来获取有关操作系统的信息,例如:
    • type(): 给出操作系统名称。
    • arch(): 给出操作系统CPU架构。
    • loadavg(): 给出操作系统计算的系统活动的度量。
    • hostname(): 给出操作系统的主机名。
    • Totalmem(): 给出系统总内存(以字节为单位)。
    • freemem(): 给出空闲(未使用)的系统内存(以字节为单位)。

全部评论 (0)

还没有任何评论哟~