node.js

[npm] pm2 관련 자주쓰는 명령어

JackCokebb 2022. 2. 4. 22:29

PM2???

PM2 is a daemon process manager that will help you manage and keep your application online 24/7

pm2는 npm에서 설치할 수 있는 패키지로, 우리의 애플리케이션을 모니터링해주는 데몬형식의 프로세스 매니저이다. 

쉽게 말하면 우리가 node.js에서 실행시키는 프로그램(프로세스)를 관리해주는 툴이라고 볼 수 있다. 

 

여러 기능들이 있지만, 가장 유용하게 쓰이는 것은 개발할때 코드를 수정할 때마다 node 런타임을 껐다가 다시 켰어야 했는데, 이 pm2는 코드 수정을 감지하고 자동으로 수정된 코드로 다시 프로세스를 실행시켜줘서, 직접 껐다 켰다 할 필요가 없다는 것이다. 

또, 예기치 않게 프로세스가 종료되었을때, pm2가 자동으로 재시작을 해주기도 한다.

 

PM2 설치

npm에서 설치해주면 된다.

//-g 옵션은 pm2가 독립된 소프트웨어로, 로컬환경 어디서든 실행되도록 한다.
$ npm install pm2@latest -g

 

PM2로 프로세스 실행시키기

// ex) app.js 실행시키기  app.js 대신 본인의 프로그램이 들어가면 됨.
$ pm2 start app.js

//app.js 실행과 동시에 log 출력
$ pm2 start app.js --attach

//arguments를 넘겨주면서 app.js 실행 -> -- 사용
$ pm2 start app.js -- arg1 arg2

//--watch 옵션을 붙이면, 코드를 수정했을때 자동으로 감지하고 프로세스를 재시작한다.
$ pm2 start app.js --watch

다음과 같이 main.js를 실행시키면 main이라는 프로세스 name을 자동으로 생성하고 실행시키는 모습이다.

PM2로 프로세스 중지시키기

//pm2가 정한 프로세스의 name과 id로 중지 가능
$ pm2 stop app
$ pm2 stop [process_id]

//pm2가 관리하는 모든 앱 종료
$ pm2 stop all

//한번에 여러 프로세스 종료
$ pm stop app1 app2

 

프로세스 list 확인하기

$ pm2 list

 

프로세스 종료 후 삭제

//app은 프로세스 name 임
$ pm2 delete app

//전체 stop 후 삭제
$ pm2 delete all

 

PM2 터미널 대시보드, terminal dasboard

PM2는 구동중인 앱의 리소스 사용량과 상황을 모니터링할 수 있는 대시보드를 제공한다.

$ pm2 monit