You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PM2设置stop_exit_codes不生效无法停止自动重启该如何解决?

PM2 stop_exit_codes 配置不生效解决方案

1. 核心问题:PM2版本过低

stop_exit_codes 配置项及对应的命令行参数是PM2 v4.2.0版本才新增的特性,低于该版本的PM2会出现配置不生效、命令行参数无法识别的报错。

修复步骤:

  • 查看当前PM2版本:pm2 -v
  • 升级到最新稳定版:npm install pm2@latest -g
  • 升级PM2后台守护进程(必须执行,否则旧的常驻进程依然不支持新特性):pm2 update

2. 配置生效注意事项

如果之前已经启动过对应脚本,直接执行pm2 restart不会加载新的配置,需要执行以下操作:

  • 先删除旧的进程实例:pm2 delete "My script" 或者 pm2 delete ecosystem.config.js
  • 重新加载配置启动:pm2 start ecosystem.config.js

注意:请确保配置中没有添加autorestart: false参数,该参数会覆盖所有重启策略配置,导致stop_exit_codes失效。


3. 命令行启动的正确写法

版本升级后,你使用的命令行参数写法即可正常生效:
pm2 start index.js --stop-exit-codes 2


4. 适配你的需求的配置调整

你的需求是「仅当退出码0正常退出时才重启,其他错误退出都不重启」,可以将stop_exit_codes设置为1-255的所有非0退出码,配置示例:

module.exports = {
  apps : [{
    name   : "My script",
    script : "./index.js",
    // 所有非0退出码都触发停止重启逻辑
    stop_exit_codes: Array.from({length: 255}, (_, i) => i + 1)
  }]
}

如果不需要覆盖所有非0退出码,仅需要针对特定退出码(比如2)停止重启,保留你原来的配置即可


5. 验证方式

启动后执行pm2 status查看进程状态,当进程以配置的退出码退出后,进程状态会变为stopped而非restarting/errored,即代表配置生效。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:48:01