kill进程_你还在使用kill -9 杀进程吗?从原理谈避免踩雷!
你要“跑路”了吗?
只要你用过 UNIX/LINUX ,我敢打赌你大概率执行过这样一条命令,也就是俗话说的“杀进程”:
kill -9
执行它,是不是如同执行以下命令一样酸爽:
rm -rf
因为他带来了一种感觉和预期,那就是:别拦我,我要跑路了!
同样是杀进程, kill -9 有什么特别之处 ?
Perl 大牛 Randal Schwartz 这样描述过:
no no no,不要使用kill -9。
它没有给进程留下善后的机会:
1) 关闭 socket 连接
2) 清理临时文件
3) 将自己将要被销毁的消息通知给子进程
4) 重置终止状态
如果你是用了 kill -9,就意味着用收割机来修剪花盆里的花,换句话说,就是杀鸡用了牛刀。进程没有机会完成清理工作,会留下一些不完整的文件和状态。下次系统重启时会带来很多麻烦。
先了解一下原理
有什么可以替代 kill -9 呢?我们先来了解一下相关的原理。
先看下图。
重点说下 9)SIGKILL 和 15)SIGTERM。
也就是说执行 kill -9 时,系统会发 SIGKILL 信号给进程,而在执行 kill -15 命令时,系统会发 SIGTERM 的信号给进程。
- 收到 SIGKILL 的信号,进程立即终止,该信号不能被捕获或忽略,并不执行任何清理文件步骤。非常残酷和决绝。
- 收到 SIGTERM 的信号,会导致进程的终止,但是不同于SIGKILL,它可以被捕获和解释(或忽略)。 有点像:温柔的问一句进程,终止你可好?这样可以清理文件并关闭。
事实上,正常关机的时候,大部分系统都会发SIGTERM给所有不是一定要断电的进程,等待几秒,然后发出SIGKILL强行终止仍旧存在的进程。
在你想kill -9之前,其实还能做点其他的!
当你输入 kill 的时候,默认情况下发送的就是 -15,发送的 SIGTERM 信号,以便为目标进程提供自我清理的机会。
如果进程被卡住,比较好的一些方法是可以使用 strace、truss、ltrace 或 gdb来查看进程为什么被卡住,此外 pstack 也可以协助排查。
在 kill -9 痛下杀手之前,一般情况下,你可以发送15(SIGTERM),查看状态; 等待一小会儿,如果不起作用,发送2(SIGINT);如果还不起作用,发送1(SIGHUP);如果不成功,删除二进制文件,因为程序不是在正常运行。
什么时候应该用 kill -9 呢?
当然很多人会说,我常使用 kill -9,并没有感觉到有什么不妥,这样做的真的是省事又方便。
但是常在河边走,哪有不湿鞋。当你破坏了一个重要数据库或造成其他损失的时候,会后悔只图一时痛快。
因此 kill -9 是不得已而为之的最后的手段,尽量不要用在生产系统上,特别是像 mount 这样的进程上,除非你再也不想用那个你想杀掉的进程关联的程序、数据库、磁盘、文件......
你会经常用 kill -9 吗?在评论区留下你的意见吧。
后续还会分享运维小技巧,欢迎关注。
kill进程_你还在使用kill -9 杀进程吗?从原理谈避免踩雷!相关推荐
- linux定时结束java进程_使用zt-exec库定时清理linux休眠进程
在几个月前上线的一个采集项目,构架是基于java + selenium + chromedriver + chrome实现的采集.至于为哈不直接用jsoup或httpclient实现采集功能,是因为很 ...
- tasklist 结束进程_使用 TASKLIST 命令查看 windows 当前运行进程
执行 TASKLIST /FO CSV /FI "IMAGENAME eq EXCEL.EXE" /FI "STATUS eq RUNNING" /NH 命令, ...
- java怎么样结束进程_用怎么样的JAVA代码结束指定进程?
1 线程正常执行完毕,正常结束. 也就是让run方法执行完毕,该线程就会正常结束. 2 监视某些条件,结束线程的不间断运行. 然而,常常有些线程是伺服线程.它们需要长时间的运行,只有在外部某些条件满足 ...
- windows进程管理器_软件进程自动重启一遍又一遍……你需要这款自动杀进程的小公举ProcessKO...
[PConline 应用]用Windows系统最烦的一件事,就是各种乱七八糟的进程.我们知道软件要运行,就会在后台唤起进程,但这些进程有时候并不那么听话,某些软件会不断唤起进程,对此Windows自带 ...
- kill 进程_结束进程,查看后台进程
有一些进程想要结束怎么办呢?进程的优先是怎样的呢?如何查看后台正在运行的进程呢?下面我就来讲讲 给进程发送信号(kill -l列出所有支持的信号) [root@qianfeng ~]# kill -l ...
- kill 进程_如何查杀stopped进程
在Linux系统下面,top命令可以查看查看stopped进程.但是不能查看stopped进程的详细信息.那么如何查看stopped 进程,并且杀掉这些stopped进程呢? ps -e j | gr ...
- Linux工作笔记032---Centos7.3 kill杀掉不用的进程_查看某个进程_某个进程占用的cpu,内存情况
JAVA技术交流QQ群:170933152 $ kill -s 9 1827 其中-s 9 制定了传递给进程的信号是9,即强制.尽快终止进程. linux查看是否有某个运行的进程命令:例如,查询是否包 ...
- kill 进程_如果有个进程kill 9杀不掉,怎么办?
点击上方蓝色"后端面试那些事儿",选择"设为星标" 学最好的别人,做最好的我们 来源 | https://blog.csdn.net/21aspnet/arti ...
- mysql 僵尸进程_如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之
用ps和grep命令寻找僵尸进程 #ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 ...
最新文章
- AI如何落地企业?UCloud三步走战略:Build,Train,Deploy
- Vivado中使用逻辑分析仪ILA
- IOS判断用户的网络类型(2/3/4G、wifi)
- 当一个软件新版本提交测试时要有,如何改善没完没了的软件测试版本?
- labview实例_手把手以实例教你学LabVIEW编程,事件结构框架
- Android之Animation动画的介绍及用法
- spring学习(9):idea的config配置
- 美国纽约拟将电话亭变WiFi热点
- 选择用 Java 开发 GUI:
- vue+Java后端进行调试时如何解决跨域问题
- python中颜色空间直方图_OpenCV—python 颜色空间(RGB,HSV,Lab)与 颜色直方图
- @贾跃亭,证监会喊你本周回国对乐视负责!
- 由一条微博引发的 — Xcode LLDB 调试断点总结
- jQuery中的join方法
- 观察者模式:推模型与拉模型
- 屏幕录像大师如何把LXE文件转换为EXE文件
- win10如何禁止CDR软件访问网络的设置方法教程
- 应该懂的9条经济学常识
- wps怎么减少行间距,WPS的word怎么不能缩小行间距
- MCE | 肿瘤微环境在癌症中的作用
热门文章
- php+字符串去掉反斜杠,PHP如何去掉反斜杠?
- 鸿蒙杀戮手机电脑版,鸿蒙杀戮单职业最新版
- discuz mysql_搭建Discuz! (mysql+apache+Discuz! )
- python 抛出异常_python 异常
- 从零开始学习docker(十二)介绍Docker Compose基本使用
- 十一、探索性数据分析应用案例
- 细思恐极,插上U盘就开始执行Python代码的程序
- 干货 | 机器学习入门方法和资料合集
- sqlserver browser无法启动_SQL Server中非sysadmin权限用户在SQL Agent的权限
- 华为手机像素密度排行_2020上半年手机芯片十大排行:华为麒麟990第四,骁龙865第一...