kill -9 杀不掉进程解决方法

在Linux操作系统中,有可能会遇到这么一个问题,就是当你尝试去杀掉一个进程的时候,发现一直kill不掉,再次查看的时候进程还是依然存在。

原因:

在Linux中当你用kill命令向进程发送信号,并不是杀死的意思,-9表示无条件退出,但由进程自行决定是否退出,这就是为什么kill -9 终止不了系统进程和守护进程的原因。

常见的两种kill不掉进程的情况:

1. 进程已经成为僵尸进程(zombie),当它的父进程将它回收或将它的父进程kill掉,ps就看不到这个进程了。可通过top这个指令第二列PPID显示的为父进程。僵尸进程在下次系统重启会消失,但它的存在不会影响系统性能。

2. 进程处于内核态。当进程进入内核态的时候,通常会关闭中断(为了保证内核代码的原子性和可靠性),也会屏蔽所有的信号(防止信号处理程序在内核执行期间被调用,否则会导致不可预期的结果),包括SIGKIL,所以这个时候回使用kill -9发起的信号也一样会被屏蔽。但是信号会被记录在进程的信号挂起队列,进程切换回用户态的时会立即触发信号处理程序。

需要注意的是,进程在内核态执行期间,如果发生了错误或异常,可能会导致进程被强制终止,此时的进程是可以响应kill信号的。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值