nodejs 프로세스/프로그램 종료하는 방법

Wookoa 2024. 1. 26.

nodejs 프로그램/프로세스 종료하는 방법
nodejs 프로그램/프로세스 종료하는 방법

머리말

  nodejs 웹 애플리케이션에 SSL 적용 작업을 수행 중이었다. 운영체제 스케줄을 활용해서 SSL 인증서 갱신 후 애플리케이션 재기동까지 한 번에 처리할 수 있는 스크립트를 작성했다. 별로 중요한 사항은 아니었지만, nodejs 애플리케이션을 종료하기 위해 가장 자연스러운 방법이 무엇일지 고민했었다. 본 포스팅에서는 애플리케이션 소스 코드에서 nodejs 프로세스를 종료하는 방법과 운영체제 명령어를 통해 종료하는 방법을 구분지어서 소개한다.

소스 코드에서 종료하는 방법

  nodejs 소스 코드 내에서 프로그램을 종료시키는 방법을 의미한다. 머리말에서 설명한 바와 같이, 본인이 처한 상황에서는 어울리는 방법은 아니었다. 소스 내부에서 애플리케이션을 종료하는 함수를 생성한 뒤, 외부에서 해당 함수를 호출하는 방식은 거추장스러웠다. 아래의 설명은 nodejs 애플리케이션을 종료하는 소스를 간단하게 설명하며, 함수를 호출해서 애플리케이션을 종료하는 방법에 대해서는 설명하지 않도록 한다.

process.exit(int code)

  nodejs 애플리케이션을 종료하는 가장 간단한 코드다. 애플리케이션의 수명이 다해서 종료할 시점에서 호출되기도 하며 예외처리에서 애플리케이션을 종료할 때에도 사용된다. 정수형 code 값은 선택사항이며, code 값을 입력하면 애플리케이션을 종료할 때 해당 코드 값을 리턴하고 종료한다. 숫자 0을 리턴하면 정상적인 종료를 의미하며, 그 외 255까지의 숫자는 애플리케이션 개발자가 정의한 오류 코드로 분류할 수 있다. 설명 그대로 오류 코드의 분류는 개발자가 직접 정의한다. 예를 들어 1을 리턴하면 커넥션 타임아웃 오류, 2를 리턴하면 파일 쓰기 권한 오류 등으로 분류해서 정수형 code 값을 리턴한다.

process.exit(0);

process.exit(1);

return

  일반적으로 대다수의 프로그램은 메인 프로그램 위치에서 return 코드를 만나면 프로그램이 종료된다. nodejs 애플리케이션도 마찬가지다. app.js와 같은 메인 자바스크립트에서 return 코드를 수행하면 애플리케이션이 종료된다. 하지만 process.exit 코드를 사용할 수 있는 이상 return 코드로 애플리케이션을 종료할 이유는 없다. 가급적이면 nodejs에서 제공하는 종료방법을 사용하도록 하자.

return;

return true;

return false;

return 0;

return 1;

운영체제 명령어를 통해 종료하는 방법

  소스 코드 내에서 종료하는 방법을 제외하고는 애플리케이션 외부에서 프로세스를 종료하는 방법밖에 없다. 운영체제에서 프로세스를 종료하기 위한 방법은 다양하다. 프로세스 아이디를 기준으로 종료할 수 있고, 서비스 중인 포트번호를 기준으로 종료할 수도 있다. 하지만 본 포스팅은 별도의 모듈 설치 없이 리눅스에서 기본으로 제공하는 명령어로만 종료하는 방법을 소개한다.

kill -9 <PID>

  실행 중인 nodejs 애플리케이션의 이름을 기준으로 프로세스 아이디를 찾아서 애플리케이션을 종료하는 방법이다. 고전적인 방법으로 가장 확실하고 명확하게 애플리케이션을 종료할 수 있다. 아래와 같이 ps -ef 명령어로 실행 중인 프로세스 아이디를 찾은 뒤, kill -9 명령어로 애플리케이션을 종료한다.

ps -ef | grep <app_name>

kill -9 <pid>

kill 명령어를 통한 어플리케이션 종료
kill 명령어를 통한 어플리케이션 종료

pkill <pattern>

  최종적으로 본인이 선택한 종료 방법이다. 특정 패턴만으로 프로세스를 지목할 수 있어서 한 번의 명령어로 nodejs 애플리케이션을 종료할 수 있다. 명령어 뒤에 pattern은 프로세스 이름을 지정하면 된다. 본인의 경우 node 프로세스를 종료하기 때문에 node 패턴을 지정했다. 만약, 자신의 서버에 여러 개의 node 애플리케이션이 서비스 중이라면 한 번에 종료되니 참고하길 바란다.

pkill node

pkill 명령어를 통한 어플리케이션 종료
pkill 명령어를 통한 어플리케이션 종료

꼬리말

  다른 프로그램과 같이 nodejs 종료를 위한 명령어가 별도로 존재하길 기대했지만, 운영체제 기본 명령어로 종료하는 방법밖에 찾지 못했다. 그렇기 때문에 본 포스팅에서 설명한 종료방법은 nodejs 애플리케이션에만 해당되는 내용은 아니다. 본의 아니게 kill, pkill 등 리눅스의 명령어를 설명하는 방향으로 포스팅을 작성했지만, 더 좋은 종료 방법을 찾게 된다면 본 포스팅을 업데이트할 예정이다. Nodejs 프로세스 및 프로그램을 종료하는 명령어를 소개한 본 소프팅은 이로써 마무리 짓도록 한다.

인기있는 글

소중한 댓글 (0)