PM2 速查表

Node.js 进程守护、日志查看与分割轮转、集群扩缩容与开机自启常用命令

基础

版本、守护进程状态、列表与监控

命令 说明
pm2 -v 查看 PM2 版本
pm2 ping 检查 PM2 守护进程状态
pm2 list 查看进程列表(简写:pm2 ls)
pm2 monit 打开实时监控面板(CPU/内存)

进程管理

启动、重启、重载、停止、删除、扩缩容

命令 说明
pm2 start app.js 启动脚本
pm2 start app.js --name api 启动并指定进程名
pm2 start npm --name web -- run start 以 npm script 方式启动
pm2 restart api 重启进程
pm2 reload api 零停机重载(cluster 模式更常用)
pm2 stop api 停止进程
pm2 delete api 删除进程(从 PM2 列表移除)
pm2 scale api 4 扩缩容到指定实例数

日志与排查

日志查看、诊断信息、环境变量

命令 说明
pm2 logs 查看全部进程日志
pm2 logs api 查看指定进程日志
pm2 logs api --lines 200 查看最近 N 行日志
pm2 flush 清空所有日志文件
pm2 show api 查看进程详情(路径、环境变量、重启次数)
pm2 describe api 同 show,输出更偏诊断信息
pm2 env 0 查看指定 id 进程的环境变量

日志分割与轮转

生产环境常用 pm2-logrotate 按大小或定时切分;也可在 ecosystem 里把 stdout / stderr 拆到不同文件

命令 / 配置 说明
pm2 install pm2-logrotate 安装官方日志轮转模块(按大小/定时切分、压缩、保留份数)
pm2 module:list 查看已安装模块(含 pm2-logrotate 运行状态)
pm2 conf 查看当前 PM2 与模块配置(含 logrotate 各项)
pm2 set pm2-logrotate:max_size 10M 单日志超过该大小时轮转切分为新文件
pm2 set pm2-logrotate:retain 30 每个应用最多保留的归档文件数量
pm2 set pm2-logrotate:compress true 轮转后对旧日志 gzip 压缩
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss 归档文件名中的时间戳格式
pm2 set pm2-logrotate:rotateInterval 0 0 * * * 按 cron 定时轮转(与 max_size 可配合使用)
pm2 set pm2-logrotate:workerInterval 30 检查是否需轮询的间隔(秒)
pm2 reload pm2-logrotate 重载 pm2-logrotate 模块使配置生效
pm2 reloadLogs 让各进程重新打开日志文件描述符(配合系统 logrotate copytruncate 等)
pm2 uninstall pm2-logrotate 卸载日志轮转模块

Ecosystem:按流拆文件

写在 ecosystem.config.jsapps[]

配置片段 说明
out_file: './logs/out.log', error_file: './logs/err.log' 在 ecosystem 的 apps 项里分别指定标准输出、标准错误路径,从文件层面拆成两份日志
merge_logs: true cluster 多实例时合并写到同一对 out/error 文件(便于集中查看)
log_date_format: 'YYYY-MM-DD HH:mm:ss Z' 每条日志行前带时间戳(与 logrotate 归档文件名不同)

开机自启与状态恢复

startup/save/resurrect 常用组合

命令 说明
pm2 startup 生成开机自启命令(按提示执行)
pm2 save 保存当前进程列表到 dump 文件
pm2 resurrect 从 dump 文件恢复进程
pm2 unstartup 移除开机自启配置
pm2 reset api 重置指定进程重启计数

Ecosystem 与部署

配置文件驱动的多应用管理与远程部署

命令 说明
pm2 init simple 生成基础 ecosystem 配置文件
pm2 start ecosystem.config.js 按配置文件启动应用
pm2 restart ecosystem.config.js --env production 按指定环境重启应用
pm2 deploy ecosystem.config.js production 执行部署(需预先配置 deploy)