process
노드는 파일 시스템에 접근할 수 있는 것처럼 운영 체제 정보에도 접근할 수 있다.
콘솔창에서 node를 켜고 명령창에 process 를 입력하면 프로세스에 대한 각종 정보를 불러올 수 있다.
__ : double under = dunderscore
$ node
> process.version
v14.0.0 //설치된 노드의 버전
> process.arch
x64 //processor architecture 정보. arm, ia32등일 수도 있음
> process.platform
win32 //운영체제 플랫폼의 정보. linux, darwin(맥), freebsd 등일 수도 있음
> process.pid
14736 //현재 프로세스의 아이디. 프로세스를 여러 개 가질 때 구분할 수 있음(프로세스 강제종료시 활용)
> process.uptime()
199.36 //프로세스가 시작된 후 흐른 시간. (단위는 초)
> process.execPath
C:\\Program Files\\nodejs\\node.exe //노드의 경로
> process.cwd()
C:\\Users\\kimdoodoo //현재 프로세스가 실행되는 위치
> process.cpuUsage()
{ user: 30000, system: 153000 } //현재 cpu 사용량
process.env
시스템 환경 변수들이 들어 있는 객체.
비밀키(데이터베이스 비밀번호, 서드파티 앱 키 등)를 보관한다.
process.env로 시스템 환경변수에 접근이 가능하다.
const secretId = process.env.SECRET_ID;
//소스코드가 해킹당했을 때 실제 비밀번호까지 노출될 위험을 낮춘다.
const secretCode = process.env.SECRET_CODE;
일부 환경 변수는 노드 실행 시 영향을 미친다.
→ 노드가 처음에 실행될 때는 메모리를 조금만 사용하는데, 자바스크립트 코드를 실행하다가 서버가 터질 수도 있다.
이럴 때 메모리를 늘리는 코드도 있고, 백그라운드에서 동시에 실행될 수 있는 용량(스레드풀)을 늘릴 수도 있다.
NODE_OPTIONS = --max-old-space-size=8192 //노드 실행 옵션
UV_THREADPOOL_SIZE = 8 //스레드풀 개수
process.nextTick
이벤트 루프는 다른 콜백 함수들보다 nextTick의 콜백 함수를 우선적으로 처리한다.(promise처럼)
아래 예제에서는 setImmediate와 setTimeout보다 promise, nextTIck이 먼저 실행된다.
setImmediate(() => {
console.log('immediate');
});
process.nextTick(() => {
console.log('nextTick');
});
setTimeout(() => {
console.log('timeout');
},0);
Promise.resolve().then(() => console.log('promise'));
//결과
//nextTick
//promise
//timeout
//immediate
환경에 따라 setTimeout(()=>{},0) 보다 setImmediate(()=>{})이 늦게 작동하는 경우가 존재한다.
→ 웬만하면 setTimeout 0초는 사용하지 말자.
process.exit
process.exit(0) → 0이거나 없으면.. 서버를 정상적으로 종료. (에러 없음)
process.exit(1) → 에러가 있다고 알리면서 서버를 종료.
let i = 1;
setInterval(() => {
if (i === 5) {
console.log("종료!");
process.exit();
}
console.log(i);
i += 1;
}, 1000);
참조 : 제로초(zerocho)님 인프런 강의
'기초 > Node.js' 카테고리의 다른 글
os와 path (0) | 2021.09.21 |
---|---|
Node 내장 객체 (2) - filename, exports, this (0) | 2021.09.12 |
Node 내장 객체 (1) - global, console, timer (0) | 2021.09.12 |