Skip to content

PM2 完全学习手册(Linux 版)

一套面向 学习、回顾、速查、教学 的 PM2 中文文档。
覆盖范围:Node.js 应用进程管理器 PM2(撰写时 npm latest 为 7.x;文中核心行为在 5.x–7.x 基本一致),运行环境仅考虑 Linux(systemd 引导、进程信号、权限模型等均按 Linux 叙述)。

PM2 是什么

PM2(Process Manager 2)是一个 常驻后台(daemon)的 Node.js 应用进程管理器。它解决的是"一个 Node 服务在服务器上如何长期、稳定、可观测地运行"的问题:

能力解决的问题对应章节
后台守护运行node app.js 一关终端就死快速入门
崩溃自动重启进程异常退出后无人拉起核心概念06-重启策略
开机自启服务器重启后服务不回来开机自启与远程部署
日志管理输出无处可查、日志无限膨胀日志与轮转
集群与负载均衡单进程吃不满多核 CPU集群模式与零停机发布
零停机发布发版/重启导致请求中断集群模式与零停机发布
监控与状态内存、CPU、重启次数不可见监控与告警
声明式配置一堆启动参数靠人肉记忆配置文件
远程部署每次发版手动 ssh 上去敲命令开机自启与远程部署

PM2 不是什么

  • 它不是容器/PaaS(不负责隔离与跨主机调度);
  • 不是 Node 运行时(不会帮你升级 Node 版本);
  • 不能阻止你的业务代码有 bug——它只保证"进程活着、可查、可管"。

30 秒快速上手

bash
# 1. 安装(全局)
npm install -g pm2

# 2. 启动一个应用
pm2 start app.js --name my-app

# 3. 看状态、看日志、看面板
pm2 ls            # 进程列表
pm2 logs my-app   # 实时日志(Ctrl+C 退出查看,不影响进程)
pm2 monit         # 终端监控面板(q 退出)

# 4. 日常操作
pm2 restart my-app
pm2 reload my-app   # 集群模式下零停机重载
pm2 stop my-app     # 停止但保留记录
pm2 delete my-app   # 彻底移除

# 5. 生产环境收尾(开机自启)
pm2 save            # 保存当前进程列表为快照
pm2 startup         # 按提示执行 sudo 命令,注册 systemd 自启

文档地图(建议阅读顺序)

章节内容适合
概述总览、安装、文档导航(本页)所有人
核心概念核心概念:daemon、进程模型、状态机、目录结构、生命周期必读,建立心智模型
快速入门从零跑通第一个应用 + 命令走查新手第一课
命令速查全量命令速查表(分门别类,每条一行)日常速查/回顾
配置文件ecosystem.config.js 声明式配置逐字段详解、多环境管理写配置前必读
日志与轮转日志查看、落盘、时间戳、合并、轮转(pm2-logrotate)排查问题/生产落地
监控与告警监控面板/字段解读、内存上限保护、重启策略与退避稳定性调优
集群模式与零停机发布集群模式、负载均衡、reload/gracefulReload 零停机、优雅退出多核部署/发版
开机自启与远程部署systemd 开机自启、pm2 deploy 远程发布、CI 集成生产交付
故障排查与最佳实践高频故障排查 + 检查清单 + 最佳实践 + 术语表出问题翻这里

版本与运行环境说明

  • 本文事实以官方文档与 撰写时 npm latest(7.x,要求 Node.js ≥ 18) 为准;文中命令与字段在 PM2 4.x–7.x 间基本稳定,若你装的是 5.x 同样适用。升级 PM2 后请执行一次 pm2 update
  • 目标操作系统为 Linux(systemd)。macOS 上命令大体可用,但开机自启、权限相关章节不适用。
  • PM2 通过 npm 全局安装,要求机器上已有 Node.js
  • 文中 $ 表示普通用户提示符,# 表示 root 提示符;涉及系统级操作会明确标注是否需要 sudo