Node.js/Bun 生产级进程管理器(PM = Process Manager)。核心能力:进程守护(崩溃自动重启)、cluster 模式内置负载均衡、零停机 reload、日志管理、开机自启。v7.0(2026-05)重构并官方支持 README 运行时;当前稳定版 7.0.x。很多常驻 daemon(如 botmux)用 pm2 管理生命周期与开机自启。
安装
npm install -g pm2进程生命周期
pm2 start app.js # 启动(fork 模式)
pm2 start app.js -i max # cluster 模式,按 CPU 核数起实例(内置负载均衡)
pm2 start app.js --name api # 命名进程,后续可用名字操作
pm2 stop <id|name|all> # 停止(保留进程列表记录)
pm2 restart <id|name|all> # 重启(有短暂中断)
pm2 reload <id|name|all> # 零停机滚动重启(cluster 模式,生产发布用)
pm2 delete <id|name|all> # 从进程列表移除并停止
pm2 kill # 杀掉 pm2 daemon 本身(God Daemon)状态与日志
pm2 list / ls / status # 进程列表(CPU/内存/重启次数)
pm2 monit # 实时终端监控面板
pm2 show <id|name> # 进程详情(describe 等价)
pm2 logs [name] # 实时日志(--lines 100 回看,--err 只看错误)开机自启
pm2 save # 快照当前进程列表到 dump 文件
pm2 startup # 生成 systemd/launchd 自启脚本(按提示 sudo 执行输出行)
pm2 resurrect # 从 dump 恢复进程
pm2 unstartup # 移除自启配置常用 start 选项
--instances <n> # cluster 实例数(max = CPU 核数)
--watch # 文件变更自动重启(开发用)
--max-memory-restart 512M # 超内存阈值自动重启(防内存泄漏)
--cron-restart "0 4 * * *" # cron 定时重启
--interpreter bun # 指定解释器(跑 bun/其他运行时)
--time # 日志行加时间戳ecosystem.config.js
多应用/环境配置的标准方式:
module.exports = {
apps: [{
name: 'api',
script: 'dist/main.js',
instances: 'max',
exec_mode: 'cluster',
max_memory_restart: '512M',
env_production: { NODE_ENV: 'production' },
}],
deploy: { /* pm2 deploy 远程发布配置 */ },
}pm2 start ecosystem.config.js --env production
pm2 deploy production # 远程部署(基于 ecosystem 的 deploy 段)实用组合
pm2 start app.js -i max && pm2 save # cluster 启动 + 固化进程列表
pm2 reload api --update-env # 零停机发布并刷新环境变量
pm2 install pm2-logrotate # 日志切割模块(防日志撑爆磁盘)
pm2 plus # 接入 pm2.io 云端监控
pm2 update # 升级后重启内存中的旧版 daemon与同类工具对比
- vs systemd 直接托管:pm2 更懂 Node(cluster、零停机 reload、日志聚合),但生产上建议 pm2 + systemd 自启组合使用
- vs Docker/K8s:容器化场景一般不再需要 pm2(容器自带重启策略与编排),pm2 更适合裸机/虚机部署