Skip to content

命令速查

  • 定位:
    • 日常工作的"命令字典"
    • 每条一行:语法 → 说明 → 示例
    • 适合回顾与速查,建议配合 核心概念 使用。
  • 约定:
    • <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-sizenode_args
--no-daemon前台运行 PM2(调试/容器 entrypoint)——
--attachstart 后保持前台跟随输出(调试)——

完整字段与默认值请以 配置文件 的字段表为准;此处只列高频项。

其它

bash
pm2 -v / --version     # 版本号
pm2 -h / --help        # 帮助
pm2 ls --namespace <ns>   # 按命名空间过滤列表

参考链接