Linux 杀进程指令详解:`kill -9 PID` 和 `kill -15 PID` 有什么区别?


Linux 杀进程指令详解:kill -9 PIDkill -15 PID 有什么区别?

在日常使用 Linux 的过程中,开发者或系统管理员经常会遇到需要终止某个进程的情况。这时候,kill 命令就派上用场了。但你有没有想过,为什么有时候用 kill -9,有时候用 kill -15?它们到底有啥区别?这篇文章我们就来彻底搞清楚!


一、kill 命令是什么?

kill 命令并不一定意味着"杀死"进程,它本质上是向某个进程发送一个信号(signal),然后由进程决定怎么处理这个信号。

基本语法如下:

bash 复制代码
kill -SIGNAL PID

其中:

  • SIGNAL 是发送给进程的信号编号或名称;
  • PID 是进程号。

二、kill -15 PID:温和的方式

当你执行:

bash 复制代码
kill -15 PID

其实你是向进程发送 SIGTERM(信号编号15),表示请求进程自己终止。这是 Linux 中默认的终止信号,等价于:

bash 复制代码
kill PID

如果这个进程对 SIGTERM 有设定自己的处理逻辑(比如释放资源、写日志、关闭文件等),它可以:

  • 自定义处理逻辑后退出;
  • 忽略这个信号;
  • 延迟处理。

特点:

  • 是一种"礼貌"的退出方式;
  • 给了进程一个"善后"的机会;
  • 推荐优先使用。

三、kill -9 PID:野蛮的终结者

当你执行:

bash 复制代码
kill -9 PID

发送的是 SIGKILL(信号编号9),它表示强制终止进程无法被捕捉、阻塞或忽略

操作系统内核会立刻将这个进程从系统中移除,不管它是否正在执行关键任务,也不会有任何善后处理。

特点:

  • 绝对有效;
  • 无法恢复或拯救;
  • 可能会造成数据丢失或资源未释放(例如未写入的缓存、未关闭的文件等);
  • 仅在进程无响应或kill -15失败时使用。

四、什么时候该用哪个?

场景 推荐使用
正常终止一个可控的程序 kill -15(或 kill
程序卡死、无响应 尝试 kill -15,若无效再用 kill -9
批处理或脚本中杀掉多个进程 仍应先用 kill -15,保持良好习惯
不希望进程进行任何清理逻辑 kill -9

五、总结

  • kill -15(SIGTERM):温和终止,允许进程自我清理,推荐优先使用。
  • kill -9(SIGKILL):强制终止,直接由系统杀死进程,无清理过程。

它们的主要区别就在于:一个是"请求",一个是"命令";一个可以被处理,另一个不可商量。


在面试中问到怎么回答这种?

面试官问你:"kill -9kill -15 有什么区别?"

你可以这样回答:

kill -15 发送的是 SIGTERM 信号,是一种温和的方式,请求进程自己退出,它可以被捕获并做一些清理操作;而 kill -9 发送的是 SIGKILL 信号,是一种强制终止方式,无法被进程捕获或忽略,直接由内核终结该进程。一般我们推荐优先使用 kill -15,如果进程无法响应才使用 kill -9

相关推荐
GeW13 小时前
超详细!RHCE10版通用备考策略,内含评分细则解读
linux
用户0413284651314 小时前
Linux 服务开机自启动怎么配置?systemctl enable 原理详解
linux
BreezeJiang21 小时前
从域名到 Node.js:一次云服务器请求经过了哪些层?
服务器
草莓熊Lotso1 天前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
张文君1 天前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python
IT大白鼠1 天前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
贝锐1 天前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
Julien20041 天前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
天远Date Lab1 天前
零信任架构实战:基于天远双人婚姻评估查询构建自动化房产按揭联合审查网关
运维·人工智能·架构·自动化
2601_962074681 天前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器