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

关于ECS容器退出码生成机制及带退出原因的码值咨询

ECS容器退出码的生成机制

容器的退出码本质是容器内主进程的Unix/Linux标准退出状态码,生成逻辑分两类:

  • 应用主动返回:由容器内的业务进程或启动脚本主动调用exit(n)返回,这类退出码是否附带原因,取决于应用是否在退出前输出了错误日志,但ECS不会在事件中自动填充“退出原因”字段——除非应用的错误输出被容器运行时捕获并关联到事件。
  • 运行时/ECS强制终止:当容器被系统或ECS平台强制停止时,退出码由终止信号转换而来(规则为128 + 信号编号),这类情况ECS会在事件中明确附带退出原因。

针对你提到的几个退出码:

  • 0:进程正常退出,属于预期内结束,ECS不会返回额外原因。
  • 1:通用错误码,通常是进程未捕获的异常、手动终止但无明确系统触发原因,ECS也不会附加详细原因。
  • 2:可能是两种情况:一是应用脚本/进程主动返回的错误(比如shell脚本中命令执行失败);二是运行时触发的错误(比如命令不存在、权限不足),后者ECS会附带原因。
附带退出原因且对DevOps至关重要的退出码

以下是常见的、ECS会附带明确退出原因的关键退出码,直接关联运维排查方向:

  • 137:对应SIGKILL信号,几乎都是容器因内存超出配置上限被强制杀死,是资源配置不足的核心信号,需要立即检查任务的内存预留/限制参数。
  • 143:对应SIGTERM信号,进程收到终止信号后正常退出,常见于服务滚动更新、任务被手动停止或ECS自动回收资源,需要确认是否为预期操作,排查是否存在意外的任务终止触发源。
  • 139:对应SIGSEGV信号,进程发生段错误,大概率是应用代码bug(比如访问无效内存地址),需要结合容器日志、核心转储文件排查代码问题。
  • 2:当由运行时触发时,ECS会附带原因(比如exec format error、permission denied),通常指向容器启动配置错误(比如镜像内命令不存在、任务执行角色权限不足)或运行时权限问题,是快速定位启动故障的关键信号。
  • 129-159(128+信号编号):其他信号对应的退出码,比如130(SIGINT,手动中断)、140(SIGUSR1,自定义信号),这类如果是系统/ECS触发的终止,都会附带原因,帮助区分是用户操作还是系统异常。

补充说明:

  • 你当前忽略0和1的逻辑是合理的,这两类事件要么是正常结束,要么是无明确排查方向的通用错误,对DevOps团队的排查效率提升有限。
  • 遇到退出码2的事件,优先查看ECS事件中的“退出原因”字段,再结合容器日志确认是应用自身错误还是配置/权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:36:15