命令速查
- 定位:
- 日常工作的"命令字典"
- 每条一行:语法 → 说明 → 示例。
- 适合回顾与速查,建议配合 核心概念 使用。
- 约定:
<name>表示应用名,<id>表示数字进程 id(两者大都可互换);all可批量作用于全部进程;[]内为可选参数。
进程管理(最常用)
启动
bash
pm2 start app.js # 以 fork 模式启动脚本(name 默认取文件名)
pm2 start app.js --name my-api # 指定应用名
pm2 start app.js -i max # cluster 模式,实例数 = CPU 核数(0 同 max;-1 = 核数-1)
pm2 start app.js -i 4 # cluster 模式,固定 4 个实例
pm2 start app.js --watch # 监听文件变化自动重启(仅建议开发用)
pm2 start app.js --time # 日志自动加时间戳
pm2 start app.js --max-memory-restart 512M # 内存超限自动重启
pm2 start app.js --cron-restart "0 3 * * *" # 每天 3 点定时重启
pm2 start app.js --no-autorestart # 进程退出后不自动重启(跑一次性任务)
pm2 start app.js --kill-timeout 3000 # 停止时最多等 3s 优雅退出,超时 SIGKILL
pm2 start ecosystem.config.js # 按配置文件启动(推荐!)
pm2 start ecosystem.config.js --env production # 并注入 env_production
pm2 startOrRestart ecosystem.config.js # 已存在则 restart,否则 start(幂等)
pm2 startOrReload ecosystem.config.js # 已存在则 reload,否则 start
pm2 start ./scripts/worker.js --name worker -- --flag=1 # -- 之后传给应用自身的参数查看
bash
pm2 ls / pm2 list / pm2 status # 进程列表(表格:id/name/mode/↺/status/cpu/memory)
pm2 describe <name|id> # 单个进程的完整档案(命令、路径、日志、环境、重启历史…)
pm2 info <name|id> # describe 的别名/精简版
pm2 env <id> # 查看某进程的环境变量
pm2 pid <name|id> # 打印进程 PID(可接 kill 等)
pm2 prettylist # 全量 JSON(格式化)——脚本/调试用
pm2 jlist # 全量 JSON(单行)——脚本解析用
pm2 report # 生成系统与 PM2 的诊断报告(提 issue 时附带)操作
bash
pm2 restart <name|id|all> # 重启:先停后起(有短暂中断)
pm2 restart <name> --update-env # 重启时用当前 shell 环境覆盖进程环境
pm2 reload <name|all> # 平滑重载(仅 cluster):逐个替换 worker,接近零停机
pm2 gracefulReload <name|all> # 优雅重载(历史命令;官方现口径:应用处理 SIGINT 后 reload 即优雅,见 07)
pm2 stop <name|id|all> # 停止:进程退出,但记录保留(status=stopped)
pm2 start <name> # 把已 stop 的进程重新启动(不是新增一条)
pm2 delete <name|id|all> # 彻底删除:停止并从列表移除
pm2 scale <name> 8 # cluster:扩/缩容到 8 个实例
pm2 scale <name> +3 # cluster:增加 3 个实例
pm2 scale <name> -2 # cluster:减少 2 个实例
pm2 reset <name|id> # 清零重启计数 ↺
pm2 sendSignal SIGUSR2 <name> # 给进程发自定义信号(配合应用内处理)
pm2 stop all && pm2 delete all # 清场(演示/重置时常用)记忆口诀:
stop=暂停(保留记录),delete=删除(连记录一起)。restart=杀旧起新(有中断);reload=逐个换新、0 秒停机(cluster);应用截获 SIGINT 自行退出时,reload即优雅重载。scale只对 cluster 模式有意义。
日志
bash
pm2 logs # 实时查看所有进程日志
pm2 logs <name> # 实时查看指定进程日志(Ctrl+C 退出查看)
pm2 logs <name> --lines 100 # 回看最近 100 行(默认只回放最后 15 行)
pm2 logs <name> --err # 只看 stderr/错误输出
pm2 logs <name> --out # 只看 stdout/普通输出
pm2 logs <name> --timestamp # 显示时附带时间戳(默认格式 YYYY-MM-DD-HH:mm:ss)
pm2 logs <name> --json # JSON 结构化输出(供脚本/日志采集)
pm2 flush # 清空 PM2 当前持有的日志(logs 视图/缓冲即空);磁盘文件交给轮转(见 05)
pm2 reloadLogs # 让进程重新打开日志文件(配合系统 logrotate 使用)日志落盘默认在
~/.pm2/logs/;轮转、合并、时间戳格式见 日志与轮转。
监控
bash
pm2 monit # 全屏监控面板:每进程 CPU/内存 + 实时日志(q 退出)
pm2 list # 轻量监控:表格中的 cpu/memory 列字段解读、
max_memory_restart保护、重启计数、告警方案见 监控与重启策略。
进程快照与恢复
bash
pm2 save # 把当前进程清单存为快照 ~/.pm2/dump.pm2(别名 dump;含启动参数/环境)
pm2 resurrect # 按快照恢复进程(daemon 被 kill 后手动恢复用)
pm2 update # 升级 PM2 后执行:重启 daemon 并按 dump 恢复(比 resurrect 更完整)
pm2 kill # 杀掉整个 PM2 daemon(其托管的进程会一并退出)
pm2 ping # 探活:确认 daemon 在运行(返回 pong 即正常)生产机器重启后的自动恢复靠的是 startup + save,而不是手动 resurrect——见 开机自启与远程部署。
开机自启(systemd)
bash
pm2 startup # 打印一条 sudo 命令(如 sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u <user> --hp <home>)
# —— 把打印出来的命令执行一遍即完成注册
pm2 save # 注册后必须 save,快照供开机拉起
pm2 unstartup # 同样打印一条 sudo 命令,执行后移除自启原理、多用户注意、容器场景见 开机自启与远程部署。
模块(扩展)
bash
pm2 install pm2-logrotate # 安装日志轮转模块
pm2 uninstall pm2-logrotate # 卸载
pm2 set pm2-logrotate:max_size 10M # 配置模块参数(set 即"改值")
pm2 get pm2-logrotate # 查看模块当前配置logrotate 的每个配置项含义见 日志与轮转。
start 常用旗标一表流
| 旗标 | 作用 | 对应 ecosystem 字段 |
|---|---|---|
--name <n> | 应用名 | name |
-i / --instances <n|max> | 实例数(cluster) | instances |
--watch | 监听变更自动重启(开发) | watch |
--ignore-watch "<glob>" | watch 时忽略的路径 | ignore_watch |
--time | 日志加时间戳 | time |
--merge-logs | 多实例(cluster)日志合写同一文件(去 pid 后缀) | merge_logs |
--max-memory-restart <size> | 内存超限重启 | max_memory_restart |
--cron-restart "<cron>" | 定时重启 | cron_restart |
--no-autorestart | 退出后不自动重启 | autorestart: false |
--kill-timeout <ms> | 停止时优雅退出宽限 | kill_timeout |
--listen-timeout <ms> | 等待 ready 的最长时间 | listen_timeout |
--wait-ready | 等待应用发送 ready 再算启动成功 | wait_ready |
--update-env | 重启时同步当前 shell 环境 | ——(仅 CLI) |
--env <name> | 注入 ecosystem 中 env_<name> | ——(仅 CLI) |
--interpreter <path> | 自定义解释器(如 ts-node、python) | interpreter |
--node-args "<args>" | 传给 Node 的参数(如 --max-old-space-size) | node_args |
--no-daemon | 前台运行 PM2(调试/容器 entrypoint) | —— |
--attach | start 后保持前台跟随输出(调试) | —— |
完整字段与默认值请以 配置文件 的字段表为准;此处只列高频项。
其它
bash
pm2 -v / --version # 版本号
pm2 -h / --help # 帮助
pm2 ls --namespace <ns> # 按命名空间过滤列表