pm2使用教程

PM2 使用教程
目录
- 1. PM2 简介
- 2. 环境要求
- 3. 安装
- 4. 快速上手
- 5. 核心命令
- 6. 配置文件 ecosystem.config.js
- 7. 日志管理
- 8. 进程监控与守护
- 9. 集群模式
- 10. 开机自启
- 11. 环境变量管理
- 12. 热重载 (Hot Reload)
- 13. 应用部署
- 14. PM2 Dashboard (Web 监控)
- 15. 常见问题排查
- 16. 最佳实践
- 17. PM2 vs 其他进程管理器
1. PM2 简介
PM2 (Process Manager 2) 是一个现代化的 Node.js 进程管理器,内置负载均衡器。它可以帮助你:
- 保持应用持续运行(守护进程)
- 自动重启崩溃的应用
- 轻松管理应用日志
- 监控应用性能(CPU / 内存)
- 集群模式充分利用多核 CPU
- 一键部署和开机自启
> 📌 PM2 不仅可以管理 Node.js 应用,还支持 Python、Ruby、Java、Go 等多种语言的脚本。
2. 环境要求
| 组件 | 最低版本 | 推荐版本 |
|---|---|---|
| Node.js | v10.x | v16+ / v18+ / v20 LTS |
| npm | 6.x | 最新版 |
| 操作系统 | Linux kernel 3.18+ | Ubuntu 20.04+ / CentOS 8+ / macOS 10.14+ |
检查当前环境:
node -v
npm -v
uname -a
3. 安装
3.1 Linux / macOS
# 全局安装
npm install pm2 -g
# 或使用 yarn
yarn global add pm2
# 确认安装成功
pm2 -v
# 输出类似:5.3.0
如果 pm2 命令不可用,检查 npm 全局 bin 目录是否在 PATH 中:
# 查找 pm2 安装位置
which pm2
# 或
npm bin -g
# 查看 npm 全局前缀
npm config get prefix
如果仍有问题,可以直接使用 npx:
npx pm2 -v
3.2 Windows
# 需要以管理员身份运行 PowerShell
npm install pm2 -g
# Windows 推荐使用 pm2-windows-startup 实现开机自启
npm install pm2-windows-startup -g
pm2-startup install
3.3 Docker 中使用
在 Docker 中运行 PM2 时,不建议使用 pm2 startup,而是直接在 Dockerfile 中使用 PM2 作为 PID 1:
# Dockerfile 示例
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# 全局安装 pm2
RUN npm install pm2 -g
# 暴露端口
EXPOSE 3000
# 使用 pm2-runtime 替代 pm2 start,让 PM2 成为容器内 PID 1
CMD ["pm2-runtime", "start", "ecosystem.config.js"]
4. 快速上手
假设你有一个 app.js 文件:
// app.js
const http = require('http');
const server = http.createServer((req, res) => {
res.end('Hello PM2!');
});
server.listen(3000);
console.log('Server running at http://localhost:3000');
使用 PM2 启动:
# 启动应用
pm2 start app.js
# 查看运行状态
pm2 list
# 实时查看日志
pm2 logs
# 监控面板
pm2 monit
# 让进程在机器重启后也自动运行
pm2 save
pm2 startup
就这么简单!你的应用已经被 PM2 托管了。
5. 核心命令
5.1 启动进程
# 基础启动
pm2 start app.js
# 指定应用名称(推荐,方便后续管理)
pm2 start app.js --name my-app
# 指定解释器(比如用 ts-node 运行 TypeScript)
pm2 start app.ts --interpreter ts-node
# 运行非 Node.js 脚本
pm2 start script.py --interpreter python3
pm2 start server.rb --interpreter ruby
# 运行 shell 命令
pm2 start "echo hello && sleep 10" --name my-script
# 使用 npm 脚本
pm2 start npm --name my-app -- run start
# 启动集群模式(4 个实例)
pm2 start app.js -i 4
pm2 start app.js --instances max # 自动使用所有 CPU 核心
# 延迟启动(等待 5 秒后再启动,多用于依赖启动)
pm2 start app.js --delay 5000
5.2 停止与重启
# 停止
pm2 stop my-app # 按名称
pm2 stop 0 # 按 ID
pm2 stop all # 停止所有
# 重启(先停止再启动)
pm2 restart my-app
pm2 restart 0
pm2 restart all
# 重载(0 停机重启,仅对 Node.js 应用有效)
pm2 reload my-app
pm2 reload all
# 场景说明:
# - restart: 硬重启,进程先退出再启动,有短暂中断
# - reload: 热重载,利用 cluster fork,保证 0 停机
5.3 查看状态
# 进程列表(最常用)
pm2 list
# 或
pm2 ls
pm2 status
# 输出示例:
# ┌────┬─────────────┬─────────┬─────────┬──────┬─────────┬──────┐
# │ id │ name │ mode │ status │ cpu │ memory │ ... │
# ├────┼─────────────┼─────────┼─────────┼──────┼─────────┼──────┤
# │ 0 │ my-app │ cluster │ online │ 0.5% │ 80.0mb │ ... │
# └────┴─────────────┴─────────┴─────────┴──────┴─────────┴──────┘
# 查看某个应用的详细信息
pm2 show my-app
pm2 describe 0
# 查看实时监控面板(交互式)
pm2 monit
# 资源使用概览
pm2 prettylist
5.4 删除进程
# 从 PM2 管理中删除(不会停止已运行的进程——但通常会先停止)
pm2 delete my-app
pm2 delete 0
pm2 delete all
# 注意:pm2 delete 会同时停止进程。
# 如果只想暂时停止,用 pm2 stop。
6. 配置文件 ecosystem.config.js
配置文件是管理多应用和复杂配置的最佳方式。PM2 约定使用 ecosystem.config.js。
6.1 基础配置
// ecosystem.config.js
module.exports = {
apps: [
{
name: 'my-app', // 应用名称
script: './app.js', // 入口脚本
cwd: './', // 工作目录
instances: 1, // 实例数,'max' 表示所有核心
exec_mode: 'fork', // 'fork' 或 'cluster'
autorestart: true, // 崩溃自动重启
watch: false, // 是否监听文件变化重启
max_memory_restart: '1G', // 内存超过此值重启
env: {
NODE_ENV: 'development',
PORT: 3000
},
env_production: {
NODE_ENV: 'production',
PORT: 80
}
}
]
};
使用配置文件:
# 启动
pm2 start ecosystem.config.js
# 使用特定环境变量启动
pm2 start ecosystem.config.js --env production
# 停止 / 重启 / 重载
pm2 stop ecosystem.config.js
pm2 restart ecosystem.config.js
pm2 reload ecosystem.config.js
# 删除
pm2 delete ecosystem.config.js
6.2 完整配置项说明
module.exports = {
apps: [{
// === 基本配置 ===
name: 'my-app', // 应用名称
script: './app.js', // 入口脚本路径
args: '--port 3000', // 传递给脚本的参数
cwd: '/var/www/my-app', // 工作目录
interpreter: 'node', // 解释器路径(node/python3/ruby 等)
interpreter_args: '--harmony', // 解释器参数
// === 启动模式 ===
exec_mode: 'fork', // 'fork'(单进程)| 'cluster'(集群)
instances: 1, // 实例数量,'max' 表示 CPU 核心数
// === 进程守护 ===
autorestart: true, // 异常退出自动重启
watch: false, // 监听文件变化自动重启
watch_delay: 1000, // 重启延迟(毫秒)
ignore_watch: ['node_modules', 'logs', '*.log'], // 忽略监听的目录
max_memory_restart: '1G', // 内存超限自动重启
min_uptime: '10s', // 最小运行时间(低于此算启动失败)
max_restarts: 10, // 连续异常重启的最大次数
restart_delay: 4000, // 崩溃后重启前等待毫秒数
// === 日志配置 ===
error_file: './logs/error.log', // 错误日志路径
out_file: './logs/out.log', // 标准输出日志路径
log_date_format: 'YYYY-MM-DD HH:mm:ss Z', // 日志时间格式
merge_logs: false, // 集群模式下合并所有实例日志
// === 环境变量 ===
env: {
NODE_ENV: 'development',
PORT: 3000,
DB_HOST: 'localhost'
},
env_production: {
NODE_ENV: 'production',
PORT: 80,
DB_HOST: '10.0.0.1'
},
env_test: {
NODE_ENV: 'test',
PORT: 3001
},
// === 钩子 ===
listen_timeout: 8000, // 发送 ready 信号的等待时间
kill_timeout: 5000, // 强制 kill 前的等待时间
wait_ready: false, // 等待应用发送 ready 信号
// === 其他 ===
user: 'deploy', // 以哪个用户运行(需要 root)
group: 'deploy',
force: false, // 覆盖已存在的同名应用
update_env: false, // 重启时是否更新环境变量
node_args: '--max-old-space-size=4096', // 传递给 node 的参数
}]
};
6.3 多应用配置
// ecosystem.config.js - 一个配置管理多个应用
module.exports = {
apps: [
{
name: 'web-api',
script: './api/server.js',
instances: 2,
exec_mode: 'cluster',
env: { NODE_ENV: 'production', PORT: 3000 }
},
{
name: 'worker',
script: './workers/task-runner.js',
instances: 1,
exec_mode: 'fork',
autorestart: true,
env: { NODE_ENV: 'production' }
},
{
name: 'cron-job',
script: './scripts/daily-sync.js',
instances: 1,
exec_mode: 'fork',
// 这是一个定时任务,跑完就退出,不需要守护
autorestart: false
}
]
};
7. 日志管理
7.1 查看实时日志
# 查看所有应用日志
pm2 logs
# 查看指定应用日志
pm2 logs my-app
# 只看错误日志
pm2 logs my-app --err
# 只看标准输出
pm2 logs my-app --out
# 限制最近 N 行
pm2 logs my-app --lines 100
# 使用 grep 过滤
pm2 logs my-app | grep "ERROR"
# 退出查看:Ctrl + C
7.2 日志切割
PM2 内置了 pm2-logrotate 模块用于日志轮转,防止日志文件无限增长。
# 安装
pm2 install pm2-logrotate
# 配置
pm2 set pm2-logrotate:max_size 10M # 单个日志文件最大 10M
pm2 set pm2-logrotate:retain 7 # 保留 7 份历史日志
pm2 set pm2-logrotate:compress true # 压缩旧日志(gzip)
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss
pm2 set pm2-logrotate:workerInterval 30 # 每 30 秒检查一次
pm2 set pm2-logrotate:rotateModule true # 启用切割模块
# 查看当前配置
pm2 conf pm2-logrotate
7.3 清空日志
# 清空所有日志
pm2 flush
# 清空指定应用日志
pm2 flush my-app
# 也可以直接删除日志文件
rm -f ~/.pm2/logs/*.log
> ⚠️ 注意:pm2 flush 清空后需要重启进程才能生效(或等下次写入)。
8. 进程监控与守护
8.1 进程守护机制
PM2 的守护能力体现在以下场景:
| 场景 | PM2 行为 |
|---|---|
| 应用异常崩溃 | 自动重启 |
| 应用 OOM(内存超限) | 触发 GC 或重启 |
| 应用长时间无响应 | 可配合 --wait-ready + 健康检查 |
| 操作系统重启 | 配合 pm2 startup + pm2 save 自动恢复 |
关键配置:
{
autorestart: true, // 默认 true
max_restarts: 10, // 10 分钟内最多重启 10 次,超过则停止
min_uptime: '10s', // 运行不足 10s 就算启动失败
restart_delay: 4000, // 重启前等 4 秒(避免死循环快速重启)
max_memory_restart: '1G' // 内存超限自动重启
}
8.2 延迟启动
当你的应用依赖其他服务(数据库、Redis、其他微服务)时,可以设置延迟启动:
{
name: 'api',
script: './server.js',
wait_ready: true, // 等应用发出就绪信号
listen_timeout: 10000 // 最多等 10 秒
}
然后在你的 Node.js 应用中发送就绪信号:
// server.js
const http = require('http');
const server = http.createServer(handler);
server.listen(3000, () => {
// 告诉 PM2 应用已就绪
process.send && process.send('ready');
console.log('Server is ready on port 3000');
});
8.3 最小运行时间
如果一个进程启动后很快就崩溃了,PM2 不会无限重启。它会统计一个"指数退避"策略:
- 默认
min_uptime: 1000ms(1 秒) - 默认
max_restarts: 15(15 分钟内最多 15 次重启) - 超过限制后进程会被标记为
errored状态并停止重启
# 查看进程重启次数
pm2 show my-app | grep restart
9. 集群模式
9.1 为什么使用集群模式
Node.js 默认单线程运行,利用集群模式可以:
- ✅ 充分利用多核 CPU —— 每个核心运行一个进程
- ✅ 零停机重启 —— reload 时逐个替换实例
- ✅ 内置负载均衡 —— PM2 自动分发请求到各实例
9.2 启动集群
# 方式一:命令行直接启动
pm2 start app.js -i max # 用所有 CPU 核心
pm2 start app.js -i 4 # 用 4 个实例
pm2 start app.js -i 2 --name api # 2 实例并命名
# 方式二:配置文件
module.exports = {
apps: [{
name: 'api',
script: './app.js',
exec_mode: 'cluster',
instances: 'max' // 或数字 2, 4 等
}]
};
9.3 动态扩缩容
# 增加实例(热增加)
pm2 scale api +2 # 当前基础上 +2
pm2 scale api 6 # 精确到 6 个实例
# 减少实例
pm2 scale api -2
# 查看集群分布
pm2 list
> 💡 实践建议:instances: 'max' 在小型机器上方便,但生产环境建议设为 CPU 核心数减 1,留一个核心给系统和其他服务。
10. 开机自启
10.1 Linux (systemd)
# 生成并安装 systemd 服务
pm2 startup
# 输出类似:[PM2] Init System found: systemd
# 按提示复制并执行一条 sudo 命令
# 示例输出(你的实际命令可能不同):
# [PM2] You have to run this command as root:
# sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u $USER --hp $HOME
# 执行提示的命令
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u $USER --hp $HOME
# 保存当前进程列表(关键!)
pm2 save
# 查看 systemd 服务状态
sudo systemctl status pm2-$USER
# 重启机器测试
sudo reboot
10.2 macOS (launchd)
# 生成 launchd 配置
pm2 startup
# 按提示执行 sudo 命令
# 保存进程列表
pm2 save
10.3 Windows
# Windows 上推荐使用 pm2-windows-startup
npm install -g pm2-windows-startup
pm2-startup install
# 保存进程列表
pm2 save
# 或使用 nssm(更专业的方案)
# 下载 nssm: https://nssm.cc/download
nssm install PM2 "C:\Users\\AppData\Roaming\npm\pm2.cmd" "pm2 resurrect"
nssm set PM2 AppDirectory "C:\path\to\project"
nssm set PM2 Start SERVICE_AUTO_START
nssm start PM2
10.4 持久化进程列表
# 保存当前所有进程到 ~/.pm2/dump.pm2
pm2 save
# 从保存的列表恢复(通常开机自启自动调用)
pm2 resurrect
# 查看已保存的列表
cat ~/.pm2/dump.pm2
> ⚠️ 重要提醒:每次修改进程列表(start/stop/delete)后都应该执行 pm2 save,否则重启后不会恢复最新状态!
11. 环境变量管理
# 方式一:启动时通过 --env 指定
pm2 start ecosystem.config.js --env production
# 方式二:命令行直接传
NODE_ENV=production PORT=8080 pm2 start app.js
# 方式三:配置文件中定义多环境
# ecosystem.config.js
module.exports = {
apps: [{
name: 'api',
script: './app.js',
env: { NODE_ENV: 'development', PORT: 3000 },
env_staging: { NODE_ENV: 'staging', PORT: 3000 },
env_production: { NODE_ENV: 'production', PORT: 80 }
}]
};
# 切换环境
pm2 start ecosystem.config.js --env staging
# 更新已运行进程的环境变量并重启
pm2 restart api --update-env
12. 热重载 (Hot Reload)
文件监听自动重启
# 命令行方式
pm2 start app.js --watch
# 配置文件方式
module.exports = {
apps: [{
name: 'api',
script: './app.js',
watch: true,
watch_delay: 1000,
ignore_watch: ['node_modules', 'logs', '*.log', 'public']
}]
};
集群零停机重载
# reload 会逐个替换集群实例,实现零停机
pm2 reload api
# 也可以配合配置文件
pm2 reload ecosystem.config.js
> 🆚 reload vs restart:restart 硬重启所有进程,有短暂中断;reload 利用集群特性逐台替换,适合生产环境滚动发布。
13. 应用部署
13.1 简单部署
# 在本地打包上传后,服务器上执行
cd /var/www/my-app
npm install
pm2 restart my-app --update-env
13.2 基于 Git 的部署
PM2 内置简单的部署功能:
// ecosystem.config.js
module.exports = {
apps: [{
name: 'api',
script: './app.js'
}],
deploy: {
production: {
user: 'deploy',
host: '192.168.1.100',
port: 22,
ref: 'origin/main',
repo: 'git@github.com:my-org/my-app.git',
path: '/var/www/my-app',
ssh_options: 'StrictHostKeyChecking=no',
'post-deploy': 'npm install && pm2 startOrRestart ecosystem.config.js --env production'
}
}
};
# 首次部署(在本地执行)
pm2 deploy ecosystem.config.js production setup
# 后续部署
pm2 deploy ecosystem.config.js production update
# 回滚
pm2 deploy ecosystem.config.js production revert 1
# 查看部署状态
pm2 deploy ecosystem.config.js production status
13.3 部署钩子
// ecosystem.config.js 中配置部署生命周期钩子
deploy: {
production: {
// ...
'pre-deploy': 'echo "开始部署"',
'post-deploy': 'npm install && npm run build && pm2 reload ecosystem.config.js --env production',
'post-setup': 'echo "首次部署完成"'
}
}
14. PM2 Dashboard (Web 监控)
PM2 提供免费的 Web 监控面板 pm2.io:
# 注册账号(首次使用)
pm2 register
# 或者直接登录
pm2 login
# 启动监控
pm2 monitor
# 会输出一个 Dashboard URL,类似:
# https://app.pm2.io/...
通过 Dashboard 你可以:
- 📊 实时查看所有服务器的进程状态
- 📈 CPU / 内存 / 网络流量图表
- 📝 在线查看和搜索日志
- ⚡ 远程重启 / 重载进程
- 🔔 设置告警规则(内存过高、崩溃等)
- 🗂️ 管理多台服务器
也可以试试开源替代:
- PM2 Plus —— PM2 官方企业版
- Keymetrics —— SaaS 监控服务
- 自定义监控 —— 结合 Prometheus + Grafana
15. 常见问题排查
15.1 进程不停重启
症状:pm2 list 显示 status: errored 或重启计数不断增加。
排查步骤:
# 1. 看日志找报错原因
pm2 logs my-app --lines 50 --nostream
# 2. 查看详细信息
pm2 show my-app
# 3. 手动运行看报什么错
node app.js
# 4. 常见原因
# - 端口被占用 → 改端口或 kill 占用进程
# - 依赖未安装 → npm install
# - 环境变量缺失 → pm2 env 0 检查
# - 代码异常 → 修 bug
15.2 端口被占用
# 查找占用 3000 端口的进程
sudo lsof -i :3000
# 或
sudo netstat -tlnp | grep 3000
# 杀掉占用进程
sudo kill -9 $(sudo lsof -t -i:3000)
# 或使用 pm2 的 reload(集群模式下自动处理)
pm2 reload my-app
15.3 内存占用过高
# 临时排查
pm2 monit # 看实时内存
pm2 logs --lines 100 # 看是否有报错导致泄漏
# 限制内存,超限自动重启
# ecosystem.config.js 中:
{
max_memory_restart: '500M' # 或 '1G', '512M'
}
# 使用 v8-profiler / clinic.js 分析内存泄漏
# 或使用 --inspect 参数配合 Chrome DevTools
node --inspect app.js
15.4 找不到 pm2 命令
# 原因:npm 全局 bin 不在 PATH 中
# 方案 1:重新安装到默认位置
npm install -g pm2
# 方案 2:查看并添加 PATH
npm config get prefix
# 假设输出 /usr/local,则添加:
export PATH="/usr/local/bin:$PATH"
# 写入 ~/.bashrc 或 ~/.zshrc 持久化
# 方案 3:用 npx 代替
npx pm2 list
15.5 开机自启不生效
# 排查步骤:
# 1. 确认 startup 脚本已生成
ls -la ~/.pm2/dump.pm2 # 应该存在
systemctl status pm2-$USER
# 2. 确认进程列表已保存
pm2 save # 每次 start/stop/delete 后都要 save
# 3. 手动测试 resurrect
pm2 resurrect # 应该能恢复所有进程
# 4. 如果还是不行,重新生成 startup
pm2 startup # 按提示重新执行 sudo 命令
pm2 save
# 5. Docker / 容器内
# 容器内不要用 pm2 startup,直接在 Dockerfile 用 pm2-runtime
16. 最佳实践
✅ 推荐做法
| 实践 | 原因 |
|---|---|
使用 ecosystem.config.js |
配置版本化管理,团队共享方便 |
始终给应用命名 --name |
my-app 比 0 好记 |
生产环境用 --env production |
明确区分环境 |
instances: max(集群模式) |
充分利用多核 |
max_memory_restart |
防止内存泄漏拖垮机器 |
pm2 save + pm2 startup |
保证重启自动恢复 |
pm2 reload 替代 pm2 restart |
零停机发布 |
安装 pm2-logrotate |
防止日志撑爆磁盘 |
| 配合反向代理 (nginx) | 做 SSL 终止、负载均衡 |
❌ 避免做法
| 反模式 | 正确做法 |
|---|---|
| 用 PM2 管理一次性脚本(跑完就退出) | 加 autorestart: false 或用 systemd cron |
| 所有配置硬编码在命令行 | 放到 ecosystem.config.js |
忘记 pm2 save 就重启机器 |
养成习惯:改完进程列表就 save |
Docker 容器里用 pm2 startup |
用 pm2-runtime 作为 CMD |
生产环境不设 max_restarts |
防止无限重启循环耗尽资源 |
17. PM2 vs 其他进程管理器
| 特性 | PM2 | Forever | systemd | Supervisor | Docker |
|---|---|---|---|---|---|
| 语言 | Node.js | Node.js | C | Python | Go |
| 守护 Node.js | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 集群模式 | ✅ 内置 | ❌ | ✅ (需配置) | ❌ | ✅ |
| 日志管理 | ✅ 内置 | ✅ 基础 | ❌ journalctl | ✅ 基础 | 需要额外配置 |
| 监控面板 | ✅ pm2.io | ❌ | ❌ | ❌ | 需要 Prometheus |
| 跨平台 | ✅ | ✅ | Linux | Linux/Mac | 全平台 |
| 多语言支持 | ✅ | ❌ | ✅ | ✅ | ✅ |
| 零停机重载 | ✅ reload | ❌ | 需额外配置 | ❌ | ✅ |
| 学习成本 | 低 | 低 | 中 | 中 | 高 |
| 适用场景 | Node.js 应用首选 | 简单场景 | 系统级服务 | 多语言服务 | 容器化部署 |
选型建议
- 纯 Node.js 项目 → PM2(首选,功能最匹配)
- 系统级服务 / 非 Node.js → systemd(Linux 原生)或 Supervisor
- 微服务 / 容器化架构 → Docker + Kubernetes
附录:速查命令表
# === 启动 ===
pm2 start app.js # 启动
pm2 start app.js --name api # 命名启动
pm2 start app.js -i 4 # 集群 4 实例
pm2 start app.js -i max # 集群满核
pm2 start npm --name api -- run start # 用 npm 脚本
pm2 start ecosystem.config.js # 用配置文件
# === 管理 ===
pm2 list # 查看列表
pm2 show api # 查看详情
pm2 logs # 查看日志
pm2 monit # 交互式监控
pm2 stop api # 停止
pm2 restart api # 硬重启
pm2 reload api # 热重载(0 停机)
pm2 delete api # 删除
pm2 scale api +2 # 扩缩容
pm2 flush # 清空日志
# === 持久化 ===
pm2 save # 保存进程列表
pm2 resurrect # 恢复进程列表
pm2 startup # 生成开机自启脚本
# === 配置 ===
pm2 env 0 # 查看进程环境变量
pm2 conf # 查看 pm2 全局配置
pm2 describe api # 同 show
# === 部署 ===
pm2 deploy ecosystem.config.js production update # 部署
pm2 deploy ecosystem.config.js production revert 1 # 回滚
> 📖 参考资料
> - 官方文档:https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/
> - GitHub:https://github.com/Unitech/pm2
> - PM2 Logrotate:https://github.com/keymetrics/pm2-logrotate
文档版本:v1.0 | 更新日期:2026-10-16