你要“跑路”了吗?

只要你用过 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 杀进程吗?从原理谈避免踩雷!相关推荐

  1. linux定时结束java进程_使用zt-exec库定时清理linux休眠进程

    在几个月前上线的一个采集项目,构架是基于java + selenium + chromedriver + chrome实现的采集.至于为哈不直接用jsoup或httpclient实现采集功能,是因为很 ...

  2. tasklist 结束进程_使用 TASKLIST 命令查看 windows 当前运行进程

    执行 TASKLIST /FO CSV /FI "IMAGENAME eq EXCEL.EXE" /FI "STATUS eq RUNNING" /NH 命令, ...

  3. java怎么样结束进程_用怎么样的JAVA代码结束指定进程?

    1 线程正常执行完毕,正常结束. 也就是让run方法执行完毕,该线程就会正常结束. 2 监视某些条件,结束线程的不间断运行. 然而,常常有些线程是伺服线程.它们需要长时间的运行,只有在外部某些条件满足 ...

  4. windows进程管理器_软件进程自动重启一遍又一遍……你需要这款自动杀进程的小公举ProcessKO...

    [PConline 应用]用Windows系统最烦的一件事,就是各种乱七八糟的进程.我们知道软件要运行,就会在后台唤起进程,但这些进程有时候并不那么听话,某些软件会不断唤起进程,对此Windows自带 ...

  5. kill 进程_结束进程,查看后台进程

    有一些进程想要结束怎么办呢?进程的优先是怎样的呢?如何查看后台正在运行的进程呢?下面我就来讲讲 给进程发送信号(kill -l列出所有支持的信号) [root@qianfeng ~]# kill -l ...

  6. kill 进程_如何查杀stopped进程

    在Linux系统下面,top命令可以查看查看stopped进程.但是不能查看stopped进程的详细信息.那么如何查看stopped 进程,并且杀掉这些stopped进程呢? ps -e j | gr ...

  7. Linux工作笔记032---Centos7.3 kill杀掉不用的进程_查看某个进程_某个进程占用的cpu,内存情况

    JAVA技术交流QQ群:170933152 $ kill -s 9 1827 其中-s 9 制定了传递给进程的信号是9,即强制.尽快终止进程. linux查看是否有某个运行的进程命令:例如,查询是否包 ...

  8. kill 进程_如果有个进程kill 9杀不掉,怎么办?

    点击上方蓝色"后端面试那些事儿",选择"设为星标" 学最好的别人,做最好的我们 来源 | https://blog.csdn.net/21aspnet/arti ...

  9. mysql 僵尸进程_如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之

    用ps和grep命令寻找僵尸进程 #ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 ...

最新文章

  1. AI如何落地企业?UCloud三步走战略:Build,Train,Deploy
  2. Vivado中使用逻辑分析仪ILA
  3. IOS判断用户的网络类型(2/3/4G、wifi)
  4. 当一个软件新版本提交测试时要有,如何改善没完没了的软件测试版本?
  5. labview实例_手把手以实例教你学LabVIEW编程,事件结构框架
  6. Android之Animation动画的介绍及用法
  7. spring学习(9):idea的config配置
  8. 美国纽约拟将电话亭变WiFi热点
  9. 选择用 Java 开发 GUI:
  10. vue+Java后端进行调试时如何解决跨域问题
  11. python中颜色空间直方图_OpenCV—python 颜色空间(RGB,HSV,Lab)与 颜色直方图
  12. @贾跃亭,证监会喊你本周回国对乐视负责!
  13. 由一条微博引发的 — Xcode LLDB 调试断点总结
  14. jQuery中的join方法
  15. 观察者模式:推模型与拉模型
  16. 屏幕录像大师如何把LXE文件转换为EXE文件
  17. win10如何禁止CDR软件访问网络的设置方法教程
  18. 应该懂的9条经济学常识
  19. wps怎么减少行间距,WPS的word怎么不能缩小行间距
  20. MCE | 肿瘤微环境在癌症中的作用

热门文章

  1. php+字符串去掉反斜杠,PHP如何去掉反斜杠?
  2. 鸿蒙杀戮手机电脑版,鸿蒙杀戮单职业最新版
  3. discuz mysql_搭建Discuz! (mysql+apache+Discuz! )
  4. python 抛出异常_python 异常
  5. 从零开始学习docker(十二)介绍Docker Compose基本使用
  6. 十一、探索性数据分析应用案例
  7. 细思恐极,插上U盘就开始执行Python代码的程序
  8. 干货 | 机器学习入门方法和资料合集
  9. sqlserver browser无法启动_SQL Server中非sysadmin权限用户在SQL Agent的权限
  10. 华为手机像素密度排行_2020上半年手机芯片十大排行:华为麒麟990第四,骁龙865第一...