kill 和 kill -9 的区别
原文地址: https://www.cnblogs.com/aspirant/p/11543456.html
https://www.cnblogs.com/aspirant/
进程状态转换图
kill和kill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象。
执行kill(不加 -* 默认kill -15)命令,系统会发送一个SIGTERM信号给对应的程序。当程序接收到该signal信号后,将会发生以下事情:
程序立刻停止
当程序释放相应资源后再停止
程序可能仍然继续运行
大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后再停止。但是也有程序可能接收信号后,做一些其他的事情(如果程序正在等待IO,可能就不会立马做出响应,我在使用wkhtmltopdf转pdf的项目中遇到这现象),也就是说,SIGTERM多半是会被阻塞的。
然而kill -9命令,系统给对应程序发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。
小结:在使用 kill -9 前,应该先使用 kill -15,给目标进程一个清理善后工作的机会。如果没有,可能会留下一些不完整的文件或状态,从而影响服务的再次启动。
Perl语言专家Randal Schwartz在一篇短文里这样写:
no no no.不要使用kill -9.
它没有给进程留下善后的机会:
1) 关闭socket链接
2) 清理临时文件
3) 将自己将要被销毁的消息通知给子进程
4) 重置自己的终止状态
等等。
通常,应该发送15,等一两秒钟,如果没效果,发送2,如果还不行,发送1。如果还不行,那你应该把那个程序删掉,因为那个程序写的太烂了!
不要使用kill -9。不要用收割机来修剪花盆里的花。
总之,在使用kill -9前,你应该先使用kill -15,给目标进程一个清理善后工作的机会。(进程也许无法捕捉或直接忽略SIGKILL信号,但它们可以,通常也是能够捕捉SIGTERM信号的。)如果你不留机会让进程完成清理工作,它们会留下一些不完整的文件或状态,当系统重启时,程序将无法理解这些状态。
strace/truss,ltrace和gdb都是查看一个卡住的进程因何卡住的好工具。(Solaris里的truss -u非常好用;)Solaris里还有一些非常有用的/proc相关的工具,有一些已经被移植到了Linux上。
kill 和 kill -9 的区别相关推荐
- kill和kill -9
kill和kill -9 很多时候,会有人建议你,如果kill杀不掉一个进程,就用kill -9. 为什么? kill是Linux下常见的命令.其man手册的功能定义如下: kill – send a ...
- java 捕获sigkill,如何杀死由kill或kill -9上的脚本启动的进程生成的所有子进程
我有一个名为Launcher.sh的shell脚本,它由java进程执行 . java进程在内部使用ProcessBuilder来执行bash脚本 . 在Launcher.sh中,我有以下代码 #!/ ...
- linux常用命令kill-9,【Linux常用命令】Linux kill, killall, kill -9,
kill + PID kill -9 + PID 加上-9 是强制终止的信号 killall 是直接加进程名(但是进程名一定要完整) 就能杀掉这些进程 1) 查看进程的方法: ps -ef 或者 ...
- kill 和 kill -9
kill 和 kill -9 很多时候,会有人建议你,如果kill杀不掉一个进程,就用kill -9. 为什么? kill是Linux下常见的命令.其man手册的功能定义如下: kill – send ...
- 2023-04-03 Linux中杀死进程kill和killall命令的区别,着重介绍killall
一.Linux killall 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程.kill 命令杀死指定进程 PID,需要配合 ps 使用,而 killall 直接对进程对名字进行操 ...
- kill与kill -9的区别
kill命令格式: kill -Signal pid pid是进程号,可以用 ps 命令查出 signal是发送给进程的信号, 默认参数下,kill 发送SIGTERM(15)信号给进程,告诉进程,你 ...
- Linux: kill, pkill, killall命令的区别
一.概要 1. kill 命令根据进程号(pid)杀死单个进程 2. pkill 命令根据名字杀死该名字下的所有进程 3. killall 命令根据名字杀死该名字下的所有进程,跟pkill类似 二.k ...
- 说说kill和kill -9
kill是linux中被误解很深的一个命令, 很多人以为它是杀死一个进程, 其实不然. 关于这一点, 我在之前的博文中已经提到过了. kill的真实含义是, 向进程发送信息. kill 1234 ...
- linux命令 kill 9,kill 9命令的理解与运用
kill命令格式: kill -Signal pid pid是进程号,可以用 ps 命令查出 signal是发送给进程的信号,TERM(或数字9)表示"无条件终止" 下面是一个例子 ...
最新文章
- 一文详述Attention最新进展
- 5G最完整的PPT教材
- C++ :常用文件、文件夹操作汇总
- linux内核cpu负载计算,CPU 负载 — The Linux Kernel documentation
- smarty中js的调用方法
- jedis开发过程中遇到的问题及其解决方法
- 你还在为查询滑动窗口最大值发愁吗?点开看最高效率解法!
- Python数据分析中Groupby用法之通过字典或Series进行分组
- MySQL的详细安装教程和配置过程(附安装包)
- 如何使用MonoDevelop调试Unity3D脚本
- onvif 模拟摄像头_ONVIF协议测试工具(ONVIF Device Test Tool)
- java 计算器 junit测试_Java—Junit单元测试
- css规则定义的分类,.css规则定义
- java计算机毕业设计口红专卖网站MyBatis+系统+LW文档+源码+调试部署
- 申宝优配-强者恒强还将继续
- 陈平 教授的演讲(经济学家)
- 网络分层和数据封装与解封简括
- qq撤回的消息怎么找回 python_Python实现微信中找回好友、群聊用户撤回的消息功能示例...
- 显示器该怎么选--关于色域的介绍
- android上传图片到PHP后台全过程
热门文章
- python处理wps表格数据匹配_两个excel表格数据匹配wps-WPS怎样用VLOOKUP引用另一个表格的数据...
- 安卓手机查看连接到热点设备的ip地址
- RHEL5 Oracle 11G R2 RAC 静默安装 (三) rdbms安装 dbca 建库
- RFID图书馆藏书防盗安全门门禁系统的应用分析
- CentOS7 安装Samba
- 搞笑的chitgpt
- 大数据技术与应用实训心得_大数据心得体会
- 【论文笔记】Program synthesis using natural language
- 区块链技术涉及哪些编程语言?
- OSPF的三张表(邻居表、LSDB表、路由表)、LSA、LSDB、SPF与路由表之间的关联、OSPF建立的8种必要条件