linux进程kill命令关不掉

本文详细介绍了Linux中的kill命令,包括其语法、参数及常用信号。同时,解释了为何有些进程无法通过kill命令关闭,如僵尸进程和内核状态进程。提供了解决无法kill进程的两种策略:查找并杀死父进程,以及杀死特定用户的所有进程。
摘要由CSDN通过智能技术生成

1、Linux kill 命令用于删除执行中的程序或job。

语法:kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

参数说明

  • -l <信息编号>  若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
  • -s <信息名称或编号>  指定要送出的信息。
  • [程序]  [程序]可以是程序的PID或是PGID,也可以是job编号。

使用 kill -l 命令列出所有可用信号。

最常用的信号是:

  • 1 (HUP):重新加载进程。
  • 9 (KILL):杀死一个进程,操作系统从内核级别强制杀死一个进程
  • 15 (TERM):正常停止一个进程,操作系统发送一个通知告诉应用主动关闭。效果是正常退出进程,退出前可以被阻塞或回调处理。(默认)

2、进程kill关不掉

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

通常有两种情况是不能kill掉的

  1. 进程已经成为僵尸进程(Zombie),当它的父进程将它回收或将它的父进程kill掉即可在ps输出看不到了。("Zombie"进程要等到下次重启时才会消失,但它的存在不会影响系统性能。)
  2. 进程正处在内核状态(kernel mode),Linux进程运行时分内核和用户两种状态,当进程进入内核状态后,会屏蔽所有信号,包括SIGKIL,所以这个时候kill -9也变得无效了。

 举例:

 解决办法:

  • 1、使用 ps -A -ostat,ppid,pid,cmd | grep pid命令,查看进程号以及父进程号,也可以进入到 /proc/1544目录下,执行cat status,查看父进程号

  •  2、kill -9 父进程号 子进程号:

[root@bigdata3 ~]# kill -9 87186 87200

  • 3、在kill前如果不放心,怕误杀,可以使用 ls -ail 查看PID被哪个应用程序占用。如图发现,被ocdp用户占用,可以切换命令,重复上述命令。

3、杀死指定用户所有进程(慎用)

#kill -9 $(ps -ef | grep ocdp) //方法一 过滤出ocdp用户进程 
#kill -u ocdp//方法二
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值