在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函數。

GitHub:

https://github.com/magiclen/node-sysconf

npm:

https://www.npmjs.com/package/node-sysconf

安裝

直接使用npm指令進行安裝:

npm install node-sysconf

用法

初始化

使用require函數來引入node-sysconf模組。

const sysconf = require("node-sysconf");
取得指定名稱的系統組態值

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

sysconf.get(sysconf.Name.系統組態名稱);

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

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

const sysconf = require("node-sysconf");

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