OS#

穩定性:2 - 穩定

原始碼: lib/os.js

node:os 模組提供與作業系統相關的實用程式方法和屬性。可以使用下列方式存取:

const os = require('node:os'); 

os.EOL#

作業系統特定的行尾標記。

  • POSIX 上的 \n
  • Windows 上的 \r\n

os.availableParallelism()#

傳回程式應使用的預設平行度估計值。總是傳回大於 0 的值。

此函式是 libuv 的 uv_available_parallelism() 的小包裝器。

os.arch()#

回傳編譯 Node.js 二進位檔所使用的作業系統 CPU 架構。可能的值為 'arm''arm64''ia32''loong64''mips''mipsel''ppc''ppc64''riscv64''s390''s390x''x64'

回傳值等同於 process.arch

os.constants#

包含作業系統特定的常數,例如錯誤代碼、處理程序訊號等。定義的特定常數說明於 作業系統常數

os.cpus()#

回傳包含每個邏輯 CPU 核心資訊的物件陣列。如果沒有 CPU 資訊(例如無法使用 /proc 檔案系統),陣列會是空的。

每個物件包含的屬性包括

  • model <字串>
  • speed <數字>(單位為 MHz)
  • times <Object>
    • user <number> CPU 在使用者模式下花費的毫秒數。
    • nice <number> CPU 在 nice 模式下花費的毫秒數。
    • sys <number> CPU 在 sys 模式下花費的毫秒數。
    • idle <number> CPU 在 idle 模式下花費的毫秒數。
    • irq <number> CPU 在 irq 模式下花費的毫秒數。
[
  {
    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.cpus().length 不應使用於計算應用程式可用的平行度。請使用 os.availableParallelism() 進行此目的。

os.devNull#

空裝置的特定於平台的文件路徑。

  • 在 Windows 上為 \\.\nul
  • 在 POSIX 上為 /dev/null

os.endianness()#

傳回一個字串,識別編譯 Node.js 二進位檔的 CPU 的位元序。

可能的值為大端序的 'BE' 和小端序的 'LE'

os.freemem()#

以整數形式傳回系統可用記憶體的位元組數。

os.getPriority([pid])#

  • pid <integer> 擷取排程優先順序的處理程序 ID。預設值:0
  • 傳回:<整數>

傳回 pid 指定的處理程序的排程優先順序。如果未提供 pid 或為 0,則傳回目前處理程序的優先順序。

os.homedir()#

傳回目前使用者家目錄的字串路徑。

在 POSIX 上,如果已定義,則使用 $HOME 環境變數。否則,使用 有效 UID 查詢使用者的家目錄。

在 Windows 上,如果已定義,則使用 USERPROFILE 環境變數。否則,使用目前使用者的設定檔目錄路徑。

os.hostname()#

以字串形式傳回作業系統的主機名稱。

os.loadavg()#

傳回包含 1、5 和 15 分鐘負載平均數的陣列。

負載平均數是作業系統計算的系統活動度量,表示為小數。

負載平均數是 Unix 特有的概念。在 Windows 上,傳回值永遠是 [0, 0, 0]

os.machine()#

傳回機器類型為字串,例如 armarm64aarch64mipsmips64ppc64ppc64les390s390xi386i686x86_64

在 POSIX 系統上,機器類型是由呼叫 uname(3) 來決定的。在 Windows 上,使用 RtlGetVersion(),如果它不可用,將使用 GetVersionExW()。請參閱 https://en.wikipedia.org/wiki/Uname#Examples 以取得更多資訊。

os.networkInterfaces()#

傳回包含已指定網路位址的網路介面的物件。

傳回物件上的每個金鑰識別一個網路介面。關聯的值是陣列,其中每個陣列描述已指定的網路位址。

已指定的網路位址物件上可用的屬性包括

  • address <字串> 已指定的 IPv4 或 IPv6 位址
  • netmask <字串> IPv4 或 IPv6 網路遮罩
  • family <字串> IPv4IPv6
  • mac <字串> 網路介面的 MAC 位址
  • internal <布林> 如果網路介面是迴圈或類似介面,且無法遠端存取,則為 true;否則為 false
  • scopeid <數字> 數值 IPv6 範圍 ID(僅在 familyIPv6 時指定)
  • cidr <字串> 已指派的 IPv4 或 IPv6 位址,採用 CIDR 表示法中的路由前置詞。如果 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()#

傳回一個字串,識別編譯 Node.js 二進位檔所用的作業系統平台。此值會在編譯時設定。可能的數值為 '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 <整數> 設定排程優先順序的處理序 ID。預設值:0
  • priority <整數> 要指派給處理序的排程優先順序。

嘗試設定由 pid 指定的程序排程優先順序。如果未提供 pidpid0,則使用目前程序的程序 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'

請參閱 https://en.wikipedia.org/wiki/Uname#Examples,以取得更多關於在各種作業系統上執行 uname(3) 的輸出資訊。

os.uptime()#

傳回系統正常執行時間(以秒為單位)。

os.userInfo([options])#

  • options <Object>
    • encoding <string> 用於詮釋結果字串的字元編碼。如果 encoding 設為 'buffer'usernameshellhomedir 值將會是 Buffer 實例。預設值:'utf8'
  • 傳回:<物件>

傳回目前有效使用者的資訊。在 POSIX 平台上,這通常是密碼檔案的子集。傳回的物件包括 usernameuidgidshellhomedir。在 Windows 上,uidgid 欄位為 -1,而 shellnull

os.userInfo() 傳回的 homedir 值由作業系統提供。這與 os.homedir() 的結果不同,後者會查詢環境變數以取得家目錄,然後再回歸到作業系統回應。

如果使用者沒有 usernamehomedir,則會擲回 SystemError

os.version()#

傳回識別核心版本的字串。

在 POSIX 系統上,作業系統版本是透過呼叫 uname(3) 來決定的。在 Windows 上,會使用 RtlGetVersion(),如果它不可用,則會使用 GetVersionExW()。請參閱 https://en.wikipedia.org/wiki/Uname#Examples 以取得更多資訊。

作業系統常數#

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 當套接字有緊急資料要讀取時傳送給程序。
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 表示套接字已連線。
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 上的作業。儘管在 Linux 上,ENOTSUPEOPNOTSUPP 具有相同值,但根據 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 上的 BELOW_NORMAL_PRIORITY_CLASS,以及所有其他平台上的良好值 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_HIGHEST 的行程排程優先順序。這對應於 Windows 上的 HIGH_PRIORITY_CLASS,以及所有其他平台上的良好值 -14
PRIORITY_HIGHEST 最高的行程排程優先順序。這對應於 Windows 上的 REALTIME_PRIORITY_CLASS,以及所有其他平台上的良好值 -20

libuv 常數#

常數 說明
UV_UDP_REUSEADDR