■ Front-End ■/Node.js

[Node.js] os 모듈을 사용하여 운영체제와 시스템 정보를 조회

한길(One Way) 2023. 2. 26.
Node.js는 빠르고 쉬우며 확장 가능한 JavaScript 런타임이다.

 

1. 개요

os 모듈을 사용하여 운영체제의 메모리, 플랫폼, 운영시간과 같은 정보를 표시할 수 있다.

os 모듈은 내장된 모듈이며 운영체제와 관련된 메서드와 속성을 제공한다.

 

2. 사용법

먼저 os 모듈을 선언합니다.

var os = require('os');​

os 모듈에 정의된 메서드를 사용하면 해당 정보를 쉽게 표시할 수 있다.

  • os.hostname() - 호스트 이름
  • os.type() - 운영체제 형태
  • os.uptime() - 운영시간
  • os.totalmem() - 전체 메모리 크기

3. 예제

운영체제와 시스템 정보를 표시하는 예제이다.

소스코드와 실행 결과를 보면 쉽 게 알 수 있다.

/** os : Operation System */

var os = require('os');
console.log("os.hostname() = " + os.hostname());
console.log("os.type() = " + os.type());
console.log("os.platform() = " + os.platform());
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.networkInterfaces() = " + os.networkInterfaces());
 

실행 결과

os.hostname() = DESKTOP-LTQ49UU
os.type() = Windows_NT
os.platform() = win32
os.release() = 10.0.19044
os.uptime() = 21366
os.loadavg() = 0,0,0
os.totalmem() = 21378908160
os.freemem() = 10654990336
os.networkInterfaces() = 
{
  'VMware Network Adapter VMnet1': [
    {
      address: 'fe80::9492:d89d:a1ab:69ff',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: '00:50:56:c0:00:01',
      internal: false,
      cidr: 'fe80::9492:d89d:a1ab:69ff/64',
      scopeid: 12
    },
    {
      address: '192.168.112.1',
      netmask: '255.255.255.0',
      family: 'IPv4',
      mac: '00:50:56:c0:00:01',
      internal: false,
      cidr: '192.168.112.1/24'
    }
  ],
  'VMware Network Adapter VMnet8': [
    {
      address: 'fe80::9100:4da6:cbc3:9d77',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: '00:50:56:c0:00:08',
      internal: false,
      cidr: 'fe80::9100:4da6:cbc3:9d77/64',
      scopeid: 2
    },
    {
      address: '192.168.70.2',
      netmask: '255.255.255.0',
      family: 'IPv4',
      mac: '00:50:56:c0:00:08',
      internal: false,
      cidr: '192.168.70.2/24'
    }
  ],
  'Wi-Fi': [
    {
      address: 'fe80::79e2:7f47:b045:225b',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: '08:d4:0c:69:48:44',
      internal: false,
      cidr: 'fe80::79e2:7f47:b045:225b/64',
      scopeid: 9
    },
    {
      address: '192.168.45.197',
      netmask: '255.255.255.0',
      family: 'IPv4',
      mac: '08:d4:0c:69:48:44',
      internal: false,
      cidr: '192.168.45.197/24'
    }
  ],
  'Loopback Pseudo-Interface 1': [
    {
      address: '::1',
      netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
      family: 'IPv6',
      mac: '00:00:00:00:00:00',
      internal: true,
      cidr: '::1/128',
      scopeid: 0
    },
    {
      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'
    }
  ]
}

아래의 코드를 실행해 보면 os 모듈에 정의된 메서드를 확인할 수 있다.

var os = require('os');
console.dir(os);

실행 결과

{
  arch: [Function: arch] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  cpus: [Function: cpus],
  endianness: [Function: endianness] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  freemem: [Function: getFreeMem] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  getPriority: [Function: getPriority],
  homedir: [Function: __node_internal_checkError] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  hostname: [Function: __node_internal_checkError] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  loadavg: [Function: loadavg],
  networkInterfaces: [Function: networkInterfaces],
  platform: [Function: platform] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  release: [Function: getOSRelease] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  setPriority: [Function: setPriority],
  tmpdir: [Function: tmpdir] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  totalmem: [Function: getTotalMem] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  type: [Function: getOSType] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  userInfo: [Function: userInfo],
  uptime: [Function: getUptime] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  version: [Function: getOSVersion] {
    [Symbol(Symbol.toPrimitive)]: [Function (anonymous)]
  },
  constants: [Object: null prototype] {
    UV_UDP_REUSEADDR: 4,
    dlopen: [Object: null prototype] {},
    errno: [Object: null prototype] {
      E2BIG: 7,
      EACCES: 13,

... (생략)...

os 모듈에 정의된 메서드 중에 눈에 보이는 몇 개를 다시 실행해 보았다.

var os = require('os');
console.log("os.arch() = " + os.arch());
console.log("os.platform() = " + os.platform());
console.log("os.version() = " + os.version());
console.log("");

console.log("os.cpus() = ");
console.log(os.cpus());
 

실행 결과

os.arch() = x64
os.platform() = win32
os.version() = Windows 10 Pro

os.cpus() = 
[
  {
    model: 'Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz',
    speed: 2592,
    times: {
      user: 15294500,
      nice: 0,
      sys: 10345859,
      idle: 24410609,
      irq: 1297953
    }
  },
  {
    model: 'Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz',
    speed: 2592,
    times: {
      user: 6854734,
      nice: 0,
      sys: 5771171,
      idle: 37424828,
      irq: 121468
    }
  },
  {
    model: 'Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz',
    speed: 2592,
    times: {
      user: 12329265,
      nice: 0,
      sys: 9219218,
      idle: 28502250,
      irq: 70984
    }
  },
  {
    model: 'Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz',
    speed: 2592,
    times: {
      user: 7096921,
      nice: 0,
      sys: 6628781,
      idle: 36325031,
      irq: 60265
    }
  },
  {
    model: 'Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz',
    speed: 2592,
    times: {
      user: 12796828,
      nice: 0,
      sys: 8360703,
      idle: 28893203,
      irq: 71203
    }
  },
  {
    model: 'Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz',
    speed: 2592,
    times: {
      user: 8298453,
      nice: 0,
      sys: 6740875,
      idle: 35011406,
      irq: 49250
    }
  },
  {
    model: 'Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz',
    speed: 2592,
    times: {
      user: 10350015,
      nice: 0,
      sys: 8320609,
      idle: 31380109,
      irq: 53546
    }
  },
  {
    model: 'Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz',
    speed: 2592,
    times: {
      user: 19599421,
      nice: 0,
      sys: 7247109,
      idle: 23204203,
      irq: 52890
    }
  }
]

4. 참조 URL

728x90

댓글