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

相关推荐
企鹅侠客8 分钟前
ttyd:安全地通过网络共享您的 Linux 终端
linux·运维·ttyd
wb18919 分钟前
全局搜索正则表达式grep
运维·笔记·ubuntu·云计算
yzx99101332 分钟前
Python开发功能项目
服务器·开发语言·人工智能·python·深度学习
饭碗、碗碗香44 分钟前
【开发常用命令】:服务器与本地之间的数据传输
linux·运维·服务器·笔记·学习
Linux运维技术栈1 小时前
GitLab 拉取变慢的原因及排查方法
运维·gitlab
搬码临时工1 小时前
如何开启自己计算机远程桌面连接功能? 给别人或异地访问
运维·服务器·网络·远程工作
啃火龙果的兔子1 小时前
在服务器上使用 Docker 部署 Node.js 后端服务和前端项目
服务器·docker·node.js
春马与夏2 小时前
Android自动化AirScript
android·运维·自动化
MonkeyBananas2 小时前
在Ubuntu中使用Apache2部署项目
linux·运维·ubuntu
勤奋的小王同学~2 小时前
(javaEE)网络原理-初识 局域网和广域网 ip地址和端口号 协议 五元组 协议分层 OSI七层模型 网络数据通信的基本流程
运维·服务器·网络