当前位置: 首页 > ops >正文

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


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

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


一、kill 命令是什么?

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

基本语法如下:

kill -SIGNAL PID

其中:

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

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

当你执行:

kill -15 PID

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

kill PID

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

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

特点:

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

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

当你执行:

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

http://www.xdnf.cn/news/13328.html

相关文章:

  • 服务器上传或者下载在中间断网后继续上传方法
  • 【软考中级】软件设计师考试大纲
  • 新闻类鸿蒙应用功耗危机以及优化方案
  • Java反射完全指南
  • 高频面试之5Kafka
  • Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?如何解决
  • 机器人教学和实践的可编程智能仿生机器人平台——智能六足机器人
  • 【Java开发】Spring 事务开发完全指南:从入门到精通
  • MySQL中触发器详解 触发器在自动化任务中的应用场景
  • 第27节 Node.js Buffer
  • 【编译工具】(自动化)AI 赋能的自动化测试工具:如何让测试效率提升 500% 并实现智能质检?
  • UML用例分析与用例规约表:以聊天室软件为例
  • Odoo 17 在线聊天报错 “Couldn‘t bind the websocket...“ 的解决方案
  • gitHub hexo 个人博客升级版
  • springboot + nacos + k8s 优雅停机
  • Go 通道(Channel)入门与基础使用
  • P2842 纸币问题 1
  • SpringBoot + 自建GitLab + Jenkins + CentOS Stream 9 来实现自动化部署
  • 商品中心—3.商品可采可补可售的技术文档上
  • Mybatis辅助配置-配置SQL提示
  • 2024 CKS题库+详尽解析| 1. kube-bench 修复不安全项
  • 提取 Word 中图片原始质量
  • 浅谈HDFS--基本操作
  • 进程信号之signal系统调用
  • 【编译工具】(自动化)自动化测试工具:如何让我的开发效率提升300%并保证代码质量?
  • UniApp APP打包方法(Android/iOS双平台)
  • SQL进阶之旅 Day 26:分库分表环境中的SQL策略
  • 三数之和-力扣
  • BUUCTF两道目录包含题目
  • 电动阀门领域的后起之秀:舵机,速度与精度并重