PM2는 Next.js와 같은 Node.js 애플리케이션을 24시간 내내 중단 없이 가동하기 위한 프로세스 매니저입니다. 자주 사용하는 명령어들을 용도별로 정리해 드립니다.
1. 프로세스 제어 관련
애플리케이션을 시작하고 끄거나 다시 시작할 때 사용합니다.
| 명령어 | 설명 | 비고 |
pm2 start npm --name "이름" -- start | Next.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 프로젝트를 수정하고 서버에 반영할 때는 아래 흐름이 가장 표준적입니다.
- 코드 수정 (git pull 등)
npm run build(빌드 필수!)pm2 reload nutshell-app(무중단 반영)
현재 pm2 list를 입력했을 때 상태가 ‘online’인가요? 만약 특정 프로세스가 계속 재시작(restart 횟수 증가)된다면 에러가 있는 것이니 pm2 logs로 원인을 분석해 드릴 수 있습니다. 무엇을 더 확인해 볼까요?