Linux 进程kill -9 无法杀死解决方案

从下述案例中可以看到使用kill -9 28051并未将28051进程杀死 

[root@iZufxxxxxxxxxxxx2tnZ devops-xxl-job]# kill -9 28051
[root@iZufxxxxxxxxxxxx2tnZ devops-xxl-job]# jps
28051 Launcher
29247 Jps
[root@iZufxxxxxxxxxxxx2tnZ devops-xxl-job]# jps
28051 Launcher
29539 Jps
[root@iZufxxxxxxxxxxxx2tnZ devops-xxl-job]# cd /proc/28051
[root@iZufxxxxxxxxxxxx2tnZ 28051]# jps
28051 Launcher
29582 Jps
[root@iZufxxxxxxxxxxxx2tnZ 28051]# cat status
Name:   java
State:  Z (zombie)
Tgid:   28051
Ngid:   0
Pid:    28051
PPid:   28000
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 0
Groups: 0 
Threads:        1
SigQ:   3/31202
SigPnd: 0000000000000000
ShdPnd: 0000000000004100
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 2000000181005ccf
CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
CapAmb: 0000000000000000
Seccomp:        0
Speculation_Store_Bypass:       vulnerable
Cpus_allowed:   f
Cpus_allowed_list:      0-3
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        19
nonvoluntary_ctxt_switches:     2
[root@iZufxxxxxxxxxxxx2tnZ 28051]# kill -9 28000

杀不掉的原因有两种:

 1.这个进程是僵尸进程 2.此进程是"核心态"进程

解决方案:

1、进入到“/proc/进程号”目录下,执行“cat status”命令可以查询到指定进程的父进程

2、利用“kill -9 父进程的进程号”将父进程给删除掉;

3、利用“kill 进程号”重新删除指定进程即可

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: kill -9是Linux系统中用于强制杀死进程的命令。它会直接终止进程,不会给进程任何机会去清理资源或保存数据,因此使用kill -9命令需要谨慎。一般情况下,应该先尝试使用kill命令或者其他信号来终止进程,只有在无法正常终止进程时才使用kill -9命令。 ### 回答2: “kill -9”是Linux系统中常用的杀死进程命令。它的作用是强制杀死一个进程,即使该进程不愿意退出或者存在其他异常情况。由于它的强制性质,使用这个命令需要谨慎。 使用“kill -9”命令,可以杀死任何一个进程,不管它是处于什么状态,任何用户都可以进行操作。这个命令会向目标进程发送一个强制结束(KILL)信号,从而强制终止该进程。 但是,它也有一定的缺点。一些比如网络连接、文件锁等资源,就无法及时释放,就会导致资源的浪费。一些服务进程也可能无法感知到它们被强制终止了,他们可能会在背景中“僵”,从而导致系统变慢等情况。 因此,建议在杀死进程时,先使用“ps -ef”命令查看进程的PID,然后使用“kill PID”来正常杀死进程。如果该方式无效,则尝试使用“kill -9 PID”强制杀死进程。 在实际使用过程中要多加小心,避免在意外的情况下误一个正在运行的进程,造成不必要的损失。 ### 回答3: kill -9是Linux下一种常用的杀死进程的命令。当一个进程无响应,或者需要强制停止一个进程时,kill -9可以强制杀死进程。 在Linux下,每个进程都会有一个唯一的进程ID(PID)。kill命令可以用来向指定PID的进程发送信号。默认的信号是SIGTERM,可以让进程有机会自行清除资源并优雅地退出。但有些情况下,进程可能无法正常退出,或者需要立刻停止,这时候就需要用到kill -9命令。 kill -9命令会发送一个SIGKILL信号给指定PID的进程,这个信号让进程立即停止,不会给进程任何机会清理资源或做一些收尾工作。因此,使用kill -9命令可能会导致一些不可预测的后果,如进程可能会留下垃圾数据或脏数据,或者会导致操作系统出错。 因此,在使用kill -9命令之前,应该先尝试使用kill命令发送SIGTERM信号给进程,让进程自行清理资源并退出。如果进程不响应SIGTERM信号,或者需要对进程进行强制停止,再使用kill -9命令。 可以使用以下命令杀死进程: 1.使用ps命令查找要杀死进程的PID: ps aux | grep 进程名 2.使用kill命令发送SIGTERM信号给进程kill PID 3.如果进程无法响应SIGTERM信号,再使用kill -9命令: kill -9 PID 总之,kill -9命令是Linux下一个强制杀死进程的命令,需要谨慎使用。在实际使用时,应该根据情况选择合适的信号,并优先使用SIGTERM信号,只有在必要时才使用kill -9命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值