Node.js 의 내장 모듈 중 OS 관련 정보를 추출하는데 유용하고 편리한,

https://nodejs.org/api/os.html

바로 코드부터 보시죠.

var os = require('os');
 
console.log("** os.tmpdir = " + os.tmpdir());
console.log("** os.endianness = " + os.endianness());
console.log("** os.hostname = " + os.hostname());
console.log("** os.type = " + os.type());
console.log("** os.platform = " + os.platform());
console.log("** os.arch = " + os.arch());
console.log("** os.release = " + os.release());
console.log("** os.uptime = " + os.uptime());
console.log("** os.loadavg = " + os.loadavg());
console.log("** os.totalmem = " + os.totalmem());
console.log("** os.freemem = " + os.freemem());
console.log("** os.cpus = " + os.cpus());
console.log("** os.networkInterfaces = " + os.networkInterfaces());
console.log("** os.EOL = " + os.EOL);

실행하여 봅니다.

# ./node osinfo.js
** os.tmpdir = /tmp
** os.endianness = LE
** os.hostname = TESTSERVER
** os.type = Linux
** os.platform = linux
** os.arch = x64
** os.release = 2.6.32-279.el6.x86_64
** os.uptime = 11368746
** os.loadavg = 0,0,0
** os.totalmem = 1969029120
** os.freemem = 382750720
** os.cpus = [object Object]
** os.networkInterfaces = [object Object]
** os.EOL =

그런데 os.cpus(), os.networkInterfaces() 는 표시되지 않네요. 이 둘은 array 로 리턴하기 때문입니다. 그래서 아래와 같이 코드를 수정합니다. JSON.stringify 에 대해서는 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify 을 확인하시면 됩니다.

var os = require('os');
 
console.log("** os.tmpdir = " + os.tmpdir());
console.log("** os.endianness = " + os.endianness());
console.log("** os.hostname = " + os.hostname());
console.log("** os.type = " + os.type());
console.log("** os.platform = " + os.platform());
console.log("** os.arch = " + os.arch());
console.log("** os.release = " + os.release());
console.log("** os.uptime = " + os.uptime());
console.log("** os.loadavg = " + os.loadavg());
console.log("** os.totalmem = " + os.totalmem());
console.log("** os.freemem = " + os.freemem());
console.log("** os.cpus = " + JSON.stringify(os.cpus(),null,2));
console.log("** os.networkInterfaces = " + JSON.stringify(os.networkInterfaces(),null,2));
console.log("** os.EOL = " + os.EOL);

그리고 다시 실행합니다.

# ./node osinfo.js
** os.tmpdir = /tmp
** os.endianness = LE
** os.hostname = TESTSERVER
** os.type = Linux
** os.platform = linux
** os.arch = x64
** os.release = 2.6.32-279.el6.x86_64
** os.uptime = 11369138
** os.loadavg = 0,0,0
** os.totalmem = 1969029120
** os.freemem = 382623744
** os.cpus = [
  {
    "model": "AMD Opteron(tm) Processor 6380                 ",
    "speed": 2500,
    "times": {
      "user": 1025130800,
      "nice": 214300,
      "sys": 1011348600,
      "idle": 110629538500,
      "irq": 30918300
    }
  }
]
** os.networkInterfaces = {
  "lo": [
    {
      "address": "127.0.0.1",
      "netmask": "255.0.0.0",
      "family": "IPv4",
      "mac": "00:00:00:00:00:00",
      "internal": true
    },
    {
      "address": "::1",
      "netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
      "family": "IPv6",
      "mac": "00:00:00:00:00:00",
      "scopeid": 0,
      "internal": true
    }
  ],
  "eth0": [
    {
      "address": "10.0.0.1",
      "netmask": "255.255.0.0",
      "family": "IPv4",
      "mac": "**:**:**:**:**:**",
      "internal": false
    },
    {
      "address": "****::****:****:****:****",
      "netmask": "ffff:ffff:ffff:ffff::",
      "family": "IPv6",
      "mac": "**:**:**:**:**:**",
      "scopeid": 2,
      "internal": false
    }
  ]
}
** os.EOL =