首页 > 运维 > linux运维 > 正文

[译] SIGTERM:Linux 容器的优雅终止(退出代码 143)

絕刀狂花
发布: 2025-07-10 11:38:37
原创
552人浏览过

在 unix/linux 系统中,sigterm(信号 15)是一种优雅的进程终止方式,允许程序在关闭前进行必要的清理工作。sigterm 可以通过 kill 命令发送,默认情况下,kill [id] 会向指定进程发送 sigterm。如果进程位于 docker 容器内,接收到 sigterm 后会显示退出码 143。

SIGKILL(信号 9)则是一种强制终止信号,无法被进程忽略或处理,立即结束进程,可能会导致数据丢失或损坏。接收到 SIGKILL 的 Docker 容器会显示退出码 137。

在 Kubernetes 中,SIGTERM 用于优雅地终止 pod。当 pod 被终止时,Kubernetes 会发送 SIGTERM,并在默认的 30 秒宽限期后发送 SIGKILL。此外,Kubernetes 提供了 preStop 钩子,允许在发送 SIGTERM 前执行关闭操作,以确保优雅终止。

[译] SIGTERM:Linux 容器的优雅终止(退出代码 143)

处理僵尸进程需要注意,这些进程在 CMD 列中显示为 defunct,它们虽然不再执行但仍占用进程 ID。僵尸进程会一直存在,直到父进程结束或系统重启。通过忽略 SIGCHLD 信号,可以避免僵尸进程的累积。

对于 Kubernetes 用户,pod 的终止过程包括设置 Terminating 状态、执行 preStop 钩子、发送 SIGTERM 以及在宽限期后发送 SIGKILL。处理 SIGTERMpreStop 钩子是确保 pod 优雅终止的关键,避免影响用户体验。

YOYA优雅
YOYA优雅

多模态AI内容创作平台

YOYA优雅 106
查看详情 YOYA优雅

在 NGINX Ingress Controller 的情况下,处理 SIGTERM 可能导致立即关闭,而非优雅终止。使用 preStop 钩子发送 SIGQUIT 信号可以解决这个问题,确保 NGINX 能够正常关闭。

SIGTERM 相关的错误会在 Kubernetes 中触发,表现为 pod 关闭和容器退出码 143 或 137。特别是 OOMKilled 错误会直接触发 SIGKILL,无需 SIGTERM 和宽限期。

了解和正确处理 SIGTERMSIGKILL 对管理 Unix/Linux 系统和 Kubernetes 集群至关重要,确保系统和应用程序的稳定性和可靠性。

以上就是[译] SIGTERM:Linux 容器的优雅终止(退出代码 143)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号