Linux中如何优雅地区分使用kill-9和kill-15关闭进程的最佳实践是什么?

2026-04-24 16:430阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计965个文字,预计阅读时间需要4分钟。

Linux中如何优雅地区分使用kill-9和kill-15关闭进程的最佳实践是什么?

在以下操作中,优先使用`kill -15`,只有在其失效时才使用`kill -9`。否则,可能会丢失数据、锁定或损坏文件。

为什么 kill -15 是默认且推荐的关闭方式

kill -15 发送的是 SIGTERM 信号,本质是“礼貌请求”进程自行退出。程序收到后可以:

  • 执行自定义清理逻辑(比如 Java 应用关闭线程池、Spring 关闭 Bean 生命周期)
  • 保存未刷盘的数据(如数据库事务日志、缓存快照)
  • 释放文件描述符、网络连接、互斥锁等系统资源
  • 等待正在处理的请求完成(例如 Nginx 正在响应的 HTTP 请求)

但注意:SIGTERM 可被进程忽略、阻塞或延迟响应——比如进程卡在不可中断的 IO(D 状态)、死循环、或信号处理器写错了。此时 kill -15 就会“没反应”。

什么情况下必须用 kill -9?又为什么它很危险

kill -9 发送 SIGKILL,由内核直接回收进程,绕过所有用户态代码。

阅读全文
标签:Linux

本文共计965个文字,预计阅读时间需要4分钟。

Linux中如何优雅地区分使用kill-9和kill-15关闭进程的最佳实践是什么?

在以下操作中,优先使用`kill -15`,只有在其失效时才使用`kill -9`。否则,可能会丢失数据、锁定或损坏文件。

为什么 kill -15 是默认且推荐的关闭方式

kill -15 发送的是 SIGTERM 信号,本质是“礼貌请求”进程自行退出。程序收到后可以:

  • 执行自定义清理逻辑(比如 Java 应用关闭线程池、Spring 关闭 Bean 生命周期)
  • 保存未刷盘的数据(如数据库事务日志、缓存快照)
  • 释放文件描述符、网络连接、互斥锁等系统资源
  • 等待正在处理的请求完成(例如 Nginx 正在响应的 HTTP 请求)

但注意:SIGTERM 可被进程忽略、阻塞或延迟响应——比如进程卡在不可中断的 IO(D 状态)、死循环、或信号处理器写错了。此时 kill -15 就会“没反应”。

什么情况下必须用 kill -9?又为什么它很危险

kill -9 发送 SIGKILL,由内核直接回收进程,绕过所有用户态代码。

阅读全文
标签:Linux