在Linux系統上使用C/C++語言開發程式的時候可以透過引用unistd.h來呼叫sysconf函數,在程式執行階段(runtime)獲取指定的系統組態資訊,例如記憶體大小、CPU數量、最大行程(process)數或各種的最大字數。然而,如果是想要在Node.js上抓取這些系統組態資訊,該怎麼做呢?



node-sysconf

node-sysconf是一個使用Node.js 8之後才支援的N-API所開發的模組,使用Rust語言引用libc,使得Node.js也可以間接存取sysconf函數。

npmjs.com

npm 安裝指令

npm install node-sysconf

使用方法

使用模組提供的sysconf函數可以取得指定名稱的系統組態,用法如下:

import { sysconf } from "node-sysconf";

sysconf(系統組態名稱);

系統組態名稱皆是以_SC_開頭來命名的,詳細名稱與對應的值表示的意義請自行參閱sysconf的手冊(man page)。

舉例來說,_SC_PAGE_SIZE可以取得記憶體每個頁(page)的大小(單位為byte),而_SC_PHYS_PAGES則可以取得實體記憶體總共有幾個頁。

import { sysconf, _SC_PAGE_SIZE, _SC_PHYS_PAGES } from "node-sysconf";

console.log(sysconf(_SC_PAGE_SIZE)); // 4096
console.log(sysconf(_SC_PHYS_PAGES)); // 8212478
console.log(sysconf(_SC_PAGE_SIZE) * sysconf(_SC_PHYS_PAGES)); // 33638309888, which means total RAM is 33638309888 bytes