问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何杀掉D状态的进程

发布网友 发布时间:2022-04-28 22:11

我来回答

2个回答

热心网友 时间:2022-04-14 08:11

怎么办?开*!kill -9!看你们走是不走。但这两种垃圾进程偏偏是刀*不入的,不管换哪种*法都杀不掉它们。无奈,只好reboot,像剿灭禽流感那样不分青红皂白地一律扑杀!
基本想法就是修改内核,遍历进程列表,找到处于D状态的进程,将其状态转换为别的状态就可以kill掉了。
内核模块代码:
—————-killd.c—————-
#include
#include
#include //for_each_process
MODULE_LICENSE("BSD");
static int pid = -1;
mole_param(pid, int, S_IRUGO);
static int killd_init(void){struct task_struct * p;
printk(KERN_ALERT "killd: force D status process to death/n");
printk(KERN_ALERT "killd: pid=%d/n", pid);
//read_lock(&tasklist_lock);
for_each_process(p){
if(p->pid == pid){
printk("killd: found/n");
set_task_state(p, TASK_STOPPED);
printk(KERN_ALERT "killd: aha, dead already/n");return 0;}}printk("not found");
//read_unlock(&tasklist_lock);return 0;}static void killd_exit(void){printk(KERN_ALERT "killd: bye/n");}mole_init(killd_init);
mole_exit(killd_exit);
—–Makefile————
obj-m := killd.o
编译模块make -C yourkerneltree M=`pwd` moles
插入模

热心网友 时间:2022-04-14 09:29

杀不掉的僵尸(zombie)进程linux的进程,有以下几种状态(摘自本文):StateDescriptionDUninterruptible sleep (usually IO)RRunning or runnable (on run queue)SInterruptible sleep (waiting for an event to complete)TStopped, either by a job control signal or because it is being traced.WPaging (not valid since the 2.6.xx kernel)XDead (should never be seen)ZDefunct (zombie) process, terminated but not reaped by its parent.当一个进程处于Z状态,我们称之为zombie进程,如下所示:#top -b -p 56249 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 56249 ats 20 0 0 0 0 Z 0.0 0.0 5914:36 [ET_NET 0] <defunct>正常情况下,处于zombie状态的进程,会很快地被它的父进程回收,以致于我们根本不会注意到zombie进程的存在。可在实践过程中,却有一些无法使用kill -9命令杀掉的zombie进程,这常常令我们束手无策。如果某个进程一直处于zombie状态,可能会带来一些严重的问题,例如,假设这个进程没有正确地close掉socket,就会导致这些socket处于close_wait状态,这些socket将会占用系统的ip/port资源,将导致其他程序无法创建特定socket。当出现「杀不掉」的zombie进程,我们常常归咎于kernel的bug,不了了之,但其实还有一种情况常常被忽略。让我们看看上面的这个zombie进程内部,是否还有其他线程(使用top命令的-H参数):#top -b -H -p 56249PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 56249 ats 20 0 0 0 0 Z 0.0 0.0 253:54.05 [ET_NET 0] <defunct> 56337 ats 20 0 0 0 0 D 0.0 0.0 38:53.67 [ET_AIO 0] 56338 ats 20 0 0 0 0 D 0.0 0.0 38:48.24 [ET_AIO 1] 由上可见,虽然[ET_NET 0](pid=56249)进程处于zombie状态,但它其实是一个多线程的程序,该程序中的其他线程,如[ET_AIO 0](pid=56337)等,处于D(Uninterruptible sleep)状态,因为D状态的进程(在linux中,线程只是特殊的进程)无法被中断,因此kill -9无法杀掉D状态的进程。也正因为这些D状态的进程的存在,导致父进程无法顺利的回收它们。通常,我们还需要分析处于D状态的进程卡在了哪里。可通过/proc文件系统查看D状态进程的调用栈:#cat /proc/56337/stack[<ffffffff811b372e>] __blockdev_direct_IO_newtrunc+0x6fe/0xb90[<ffffffff811b3c1e>] __blockdev_direct_IO+0x5e/0xd0[<ffffffff811b1317>] blkdev_direct_IO+0x57/0x60[<ffffffff81113543>] generic_file_aio_read+0x793/0x870[<ffffffff81177c3a>] do_sync_read+0xfa/0x140[<ffffffff81178635>] vfs_read+0xb5/0x1a0[<ffffffff81178962>] sys_pread64+0x82/0xa0[<ffffffff8100b0f2>] system_call_fastpath+0x16/0x1b[<ffffffffffffffff>] 0xffffffffffffffff由上可见,该进程卡在了磁盘的read操作中,很可能是磁盘坏了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
低温还原粉化性检验方法 ...播放量破50亿,大胃王“浪胃仙”是如何在抖音崛起的? 网络直播间:新部落的建构及其亚文化特征 网络直播中吃播的文化输出 我用圆通快递从河南商丘发到洛阳几天能到 商丘圆通快递几点下班? 河南商丘到江苏南京圆通快递,大概要多久? 四大名著语录 “命中注定我爱你”真的好看么? 好看的偶像剧 命中注定我爱你 农村商业银行是不是农业银行 linux c语言中在某个线程中怎样终止整个程序? linux 进程退出 线程怎么关闭 java linux 下用kill把进程杀死,进程内的线程会自动停止然后释放资源吗? 如何用shell命令杀死linux内核线程 Linux的线程怎么关闭 linux如何停止线程 linux怎么销毁线程 在手机上,QQ账号数字,如何隐藏? 唐姓是怎么来的,人都分布在哪里? 中国有多少人口姓氏为唐? 唐氏是不是皇帝后裔 唐朝以前有姓“唐”的人吗﹖ 谁有唐姓的起源?详细点 姓氏唐唐的姓氏怎么来的 蛇鸡是哪一年出生的? 唐姓起源于哪个年代至今有多少年历史 唐姓的起源 唐姓的来源 属蛇的是哪年出生 唐姓来源 僵死进程的在Linux 雪梨和雪花梨是一种吗 雪梨是什么样的? 南红玛瑙有绿蓝色的吗 拍婚纱照怎样笑才能自然又好看 拍婚纱照如何笑得自然美丽? 天然南红玛瑙吊坠怎么鉴定 马上要拍婚纱照了,怎么微笑拍照能最最美呢? 卖家说这个是九口南红玛瑙,是吗? 拍婚纱照时怎么笑才自然? 拍婚纱照的时候怎么笑最好看 如何鉴别仿南红 怎么笑拍婚纱照好看,更上镜呢? 文玩里有蓝色石头吗 红色的南红 或是战国红这样的 在拍婚纱照的时候新人们要怎么笑才好看 新人拍婚纱照时怎样笑的自然好看 南红戒指和青金石戒指那个价值比较高? 拍婚纱照怎么笑的灿烂 南红配什么链子好看 拍婚纱照怎么笑好看 不上相的人如何拍照自然