PM2 명령어 모음

PM2는 Next.js와 같은 Node.js 애플리케이션을 24시간 내내 중단 없이 가동하기 위한 프로세스 매니저입니다. 자주 사용하는 명령어들을 용도별로 정리해 드립니다.


1. 프로세스 제어 관련

애플리케이션을 시작하고 끄거나 다시 시작할 때 사용합니다.

명령어설명비고
pm2 start npm --name "이름" -- startNext.js 앱을 서비스 이름으로 시작npm run start 실행
pm2 stop [이름/ID]특정 프로세스 중지프로세스 정보는 유지됨
pm2 restart [이름/ID]특정 프로세스 재시작프로세스를 완전히 껐다 켬
pm2 reload [이름/ID]무중단 재시작 (Zero-downtime)서비스 중단 없이 새로고침
pm2 delete [이름/ID]특정 프로세스 삭제목록에서 완전히 제거
pm2 delete all모든 프로세스 삭제전체 초기화 시 사용

2. 모니터링 및 상태 확인

서버가 잘 돌고 있는지, 에러는 없는지 확인할 때 사용합니다.

명령어설명비고
pm2 list (또는 status)현재 실행 중인 앱 상태 확인CPU, 메모리 사용량 표시
pm2 logs모든 앱의 실시간 로그 출력에러 디버깅 시 필수
pm2 logs [이름/ID]특정 앱의 로그만 확인특정 앱의 흐름 파악
pm2 show [이름/ID]앱의 상세 정보 확인경로, 환경변수 등 표시
pm2 monit터미널 대시보드 실행실시간 리소스 모니터링

3. 서버 관리 및 자동화

서버 재부팅 시에도 앱이 자동으로 켜지게 설정하는 정석적인 방법입니다.

명령어설명비고
pm2 startup부팅 시 자동 실행 스크립트 생성출력되는 명령어를 복사/붙여넣기 해야 함
pm2 save현재 실행 목록을 덤프(저장)재부팅 후 이 목록대로 다시 켬
pm2 unstartup자동 실행 스크립트 해제

💡 실전 팁 (Best Practice)

Next.js 프로젝트를 수정하고 서버에 반영할 때는 아래 흐름이 가장 표준적입니다.

  1. 코드 수정 (git pull 등)
  2. npm run build (빌드 필수!)
  3. pm2 reload nutshell-app (무중단 반영)

현재 pm2 list를 입력했을 때 상태가 ‘online’인가요? 만약 특정 프로세스가 계속 재시작(restart 횟수 증가)된다면 에러가 있는 것이니 pm2 logs로 원인을 분석해 드릴 수 있습니다. 무엇을 더 확인해 볼까요?