kill 进程_还要kill -9杀不掉的进程?kill命令详解

我们很多人对kill -9 非常熟悉,在工作中也经常用到。特别是你去重启服务的时候。但是所有的服务都能用kill -9来处理吗?kill -9能杀掉所有的进程吗?

首先我们来了解一下 kill -n 中的n到底是什么东西。

kill

bd537d295ee339690cdaed12c87ad0f0.png

从help中可以清晰的看到 -n 指的是 信号编号,那问题来了,什么是“信号编号”?

kill -l(查看Linux/Unix的信号变量)

4ce5f6ede797b8b151126743605d8ee1.png

下面先说一下SIGKILL(kill -9)SIGTERM(kill -15)

kill -9、kill -15

kill -9 PID 是操作系统从内核级别强制杀死一个进程.

kill -15 PID 可以理解为操作系统发送一个通知告诉应用主动关闭.

SIGNTERM(15) 的效果是正常退出进程,退出前可以被阻塞或回调处理。并且它是Linux缺省的程序中断信号。

大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后再停止。但是也有程序可以在接受到信号量后,做一些其他的事情,并且这些事情是可以配置的。如果程序正在等待IO,可能就不会立马做出响应。也就是说,SIGTERM多半是会被阻塞的、忽略。

但是kill -9 pid也不是所有的程序都会乖乖听话,总有那些状态下的程序无法立刻响应。

kill -9杀不掉的怎么办

用ps和grep命令寻找僵尸进

ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'

命令注解:

  • -A 参数列出所有进程
  • -o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数 因为状态为 z或者Z的进程为僵尸进程。

所以我们使用grep抓取stat状态为zZ进程,运行结果参考如下:

Z 12334 12339 /path/cmd

这时,我们可以使用 kill -HUP 12339来杀掉这个僵尸进程

运行后,可以再次运行

ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'

来确认是否已经将僵尸进程杀死 如果kill 子进程无效,可以尝试kill 其父进程来解决问题,例如上面例子父进程pid是 12334,那么我们就运行

kill -HUP 12334

来解决问题

一般可以用top命令发现动态进程表

3a18cee696246dd9be929f46bbb30d2a.png

其中zombie是僵尸进程

附录:

linux signals

af5529497769c229c564887d270c1e8a.png
e3ecd16eba9bbce6d1da95d935bd5e31.png
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过screen进程ID来终止一个screen任务,可以使用以下命令:screen -X -S \[screenID\] quit。其中,\[screenID\]是要终止的screen任务的ID。例如,如果要终止ID为41493.api的screen任务,可以执行以下命令:screen -X -S 41493.api quit。这将会终止该screen任务。\[2\] #### 引用[.reference_title] - *1* [【笔记】进程详解、ps、kill、screen、nohup、进程的优先级](https://blog.csdn.net/AHui_CSDN/article/details/125003147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [screen kill 关闭视窗的三种方法](https://blog.csdn.net/lilongsy/article/details/125316250)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [linux 后台运行工具screen常用命令](https://blog.csdn.net/lyh0519111/article/details/127787666)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值