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。
