본문 바로가기

Programming/Node.js

4. Node 기능 살펴보기 (4) - 노드 내장 모듈 1

node js logo image

 

 

 

 

내장 객체와 비슷한 방식으로, 노드는 브라우저에서의 Javascript보다 더 많은 기능을 제공합니다. 물론 노드 버전에 따라서 모듈(파일 레벨)의 기능은 차이가 있지만, 가장 안정적인 내용을 위주로 살펴보겠습니다. 

 

○ os

 

os 모듈은 말 그대로 운영체제의 정보를 가져옵니다. require('os') 또는 require('node:os')로 모듈 로드가 가능한데요, 실제 파일이 존재하는 것은 아니지만 노드가 자동으로 해당 모듈을 인식하게 됩니다. 다음 예제를 보겠습니다. 

 

const os = require('os');

console.log('os.arch():', os.arch()); 
console.log('os.platform():', os. platform()); 
console.log('os.type():', os.type()); 
console.log('os. uptime():', os. uptime()); 
console.log('os.hostname():', os.hostname()); 
console.log('os.release():', os.release());

console.log('os.homedir():', os.homedir()); 
console.log('os. tmpdir():', os.tmpdir());

console.log('os.cpus():', os.cpus()); 
console.log('os.cpus().length:', os.cpus().length);

console.log('os. totalmem():', os. totalmem()); 
console.log('os. freemem():', os.freemem());

/* 출력
os.arch(): x64
os.platform(): win32
os.type(): Windows_NT
os. uptime(): 2148918.5
os.hostname(): DESKTOP-xx
os.release(): 10.0.19045
os.homedir(): C:\xxxx\xxxx
os. tmpdir(): C:\Users\xxxxxx
os.cpus(): (16) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
os.cpus().length: 16
os. totalmem(): 34088898560
os. freemem(): 22609371136
*/

 

 

위의 내용들을 하나씩 살펴보겠습니다. 

 

· os.arch( ) : process.arch와 동일. 프로세서 아키텍처 정보를 출력한다.
· os.platform( ) : process.platform과 동일.운영체제 플랫폼을 출력한다.
· os.type( ) : 운영체제의 종류 출력
· os.uptime( ) : 운영체제 부팅 이후 흐른 시간을 초로 출력. process.uptime( )은 노드의 실행 시간.
· os.hostname( ) : 컴퓨터의 이름 출력
· os.release( ) : 운영체제의 버전 출력
· os.homedir( ) : 홈 디렉터리 경로 출력
· os.tmpdir( ) : 임시 파일 저장 경로 출력
· os.cpus( ) : 컴퓨터 코어 정보 출력
· os.freemem( ) : 사용 가능한 메모리(RAM)출력
· os.totalmem( ) : 전체 메모리 용량 출력
· os.constants : 에러 발생 시 에러의 정보가 담긴 객체 - 오류 정보를 확인 후 검색에 용이함

 

참고로 위에서 os.cpus( )와 os.cpus( ).length를 사용했습니다. 지금 코어의 개수가 16개라는 것을 확인했습니다만, 사실 노드에서 싱글 스레드 프로그래밍을 하면 코어의 개수와 무관하게 코어는 하나만 사용됩니다. 추후 배울 cluster 모듈을 사용하면 cpus( ) 메서드를 활용해 코어 개수에 맞춰서 프로세스를 늘릴 수 있습니다. 

 

일반 웹 서비스에서는 위 모듈 사용 필요성이 높지는 않지만, 운영체제별로 다른 서비스를 제공할 필요가 있다면  유용하게 사용됩니다.