Node.js프로세스와 CLI

process exit와 signals

Node.js 프로세스가 종료될 때 어떤 시그널을 받고, 정리 작업을 어디에 두는지의 기본 흐름을 정리합니다.

마지막 수정 2026년 3월 20일

기본 패턴

javascript
process.on("SIGINT", () => {
  console.log("graceful shutdown");
  process.exit(0);
});

설명

  • 서버나 CLI는 언젠가 종료되며, 그 종료가 항상 정상적인 코드 경로만으로 일어나지는 않습니다.
  • SIGINT, SIGTERM 같은 시그널을 받으면 정리 작업을 수행하고 종료 흐름을 제어할 수 있습니다.
  • 이 정리 작업에는 서버 닫기, 파일 flush, 연결 종료, 임시 파일 삭제 같은 것이 포함될 수 있습니다.
  • 특히 장기 실행 프로세스에서는 "시작"만큼이나 "어떻게 멈추는가"가 중요합니다.
  • 운영 환경에서 재시작과 배포를 안전하게 하려면 종료 훅과 시그널 처리를 미리 갖춰 두는 편이 좋습니다.

짧은 예제

javascript
process.on("SIGTERM", () => {
  server.close(() => {
    process.exit(0);
  });
});

빠른 정리

항목의미
SIGINT터미널에서 중단 신호
SIGTERM종료 요청 신호
process.on(signal, handler)시그널 처리기 등록
종료 정리서버 종료, 자원 해제, 로그 flush

주의할 점

시그널을 받았다고 해서 무조건 process.exit()를 바로 호출하는 것은 위험할 수 있습니다. 먼저 필요한 정리 작업이 끝났는지 확인하고, 종료 코드와 종료 순서를 함께 설계하는 편이 좋습니다.

참고 링크

1 sources