转自:http://blog.csdn.net/chinalinuxzend/article/details/4288791

[-]

  1. 如何杀掉D状态的进程zt

    1. 相关博文

原贴:http://www.xclinux.cn/?p=752

如何杀掉D状态的进程?[zt]

状态为 D (Uninterruptible sleep) ,以及状态为 Z (Zombie)这些垃圾进程要么是求而不得,像怨妇一般等待资源(D),要么是僵而不死,像冤魂一样等待超度(Z),它们在 CPU run_queue 里滞留不去,把 Load Average 弄的老高老高,没看过我前一篇blog的国际友人还以为这儿民怨沸腾又出了什么大事呢。怎么办?开枪!kill -9!看你们走是不走。但这两种垃圾进程偏偏是刀枪不入的,不管换哪种枪法都杀不掉它们。无奈,只好reboot,像剿灭禽流感那样不分青红皂白地一律扑杀! 
       基本想法就是修改内核,遍历进程列表,找到处于D状态的进程,将其状态转换为别的状态就可以kill掉了。 
这是一种比较粗鲁的方法,可能会引起一些不良后果,暂时没有考虑。对于确切知道已经没有什么用处,不用做清理工作的,处于D状态怎么也杀不死的进程来说,确是很有效。 
内核模块代码: 
—————-killd.c—————- 
#include <linux/init.h> 
#include <linux/module.h> 
#include <linux/sched.h> //for_each_process 
MODULE_LICENSE("BSD"); 
static int pid = -1; 
module_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"); 

module_init(killd_init); 
module_exit(killd_exit); 
—–Makefile———— 
obj-m := killd.o 
编译模块 
make -C yourkerneltree M=`pwd` modules 
插入模块的时候提供D状态的进程号,就可以将其转换为stopped状态,使用普通kill就可以杀死。 
./insmod ./killd.ko pid=1234

如何杀掉D状态的进程?[zt]【转】相关推荐

  1. 如何杀掉D,Z状态的进程

    original url: https://blog.csdn.net/bytxl/article/details/41749063 https://blog.csdn.net/qq_34312386 ...

  2. 操作系统(二 )| 进程管理初探(前趋图、程序执行、进程的定义特征基本状态,进程的创建终止,阻塞唤醒,挂起激活)

    文章目录 前趋图和程序执行 前趋图 程序的顺序执行 程序的并发执行 进程的定义和特征 进程的基本状态 就绪状态 运行状态 阻塞状态 挂起状态 进程控制块(PCB) 作用: 块中信息: PCB的组织方式 ...

  3. 线程的状态、进程的状态

    一.线程的状态 新建状态.就绪状态.阻塞状态.死亡状态. 1.新建状态 新创建一个线程对象. 2.就绪状态 线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于"可运行 ...

  4. linux 杀掉php,Linux_在Linux系统中使用xkill命令杀掉未响应的进程,我们如何在Linux中杀掉一个资 - phpStudy...

    在Linux系统中使用xkill命令杀掉未响应的进程 我们如何在Linux中杀掉一个资源/进程?很明显我们会找出资源的pid然后用kill命令. 说的更明白一点,我们可以找到某个资源(比如termin ...

  5. linux进程状态d状态,linux – 进程永久停留在D状态

    我有一个问题,在Ubuntu 10.04.3 LTS上陷入D状态的某些进程. 自11月5日(今天是12月6日)以来,他们一直处于这种状态.我知道这些是不间断的睡眠状态,通常与等待来自硬盘等硬件的数据有 ...

  6. OS/处理器状态+中断+进程

    处理器状态 核心态与用户态的转换 从用户态到内核态:中断和异常是用户态到内核态转换仅有的途径(系统调用.中断或者异常). 从内核态到用户态:计算机提供一条特权指令:加载程序状态字. 程序状态字 计算机 ...

  7. Android退出APP 并杀掉相关的所有进程

    Android退出APP 并杀掉相关的所有进程 代码如下: ActivityManager mActivityManager = (ActivityManager) mContext.getSyste ...

  8. Linux x86_64内核终止D状态的进程

    在上一篇文章< Linux x86内核终止D状态的进程>中,我展示了32位x86系统中如何编码杀死D进程.本文我将展示一种64位x86系统上的方法.         说实话,64位系统上做 ...

  9. Linux如何终止D状态的进程

    在百忙中抽出点时间帮温州皮鞋厂老板解决一个杀掉D进程的问题,虽然最终线上的机器被老板蹂躏挂了,我也没帮上什么实质性的忙,还是写点记录,以备查阅.         碰到这个问题,我第一个反应就是网搜解决 ...

最新文章

  1. mongodb 内建用户
  2. Java实现算法导论中反复平方法模取幂
  3. 把伪需求扼制在摇篮里-B端产品需求方法论
  4. 如何让鼠标跑不出来_洗衣机常年不清洗脏过马桶,教你一窍门,脏东西自己跑出来...
  5. 上海市二级c语言软件环境,上海市计算机二级C语言复习资料 word整理版.doc
  6. Spring Boot集成Redis缓存之RedisTemplate的方式
  7. Visual Studio 2013 突然不高亮,编译报错
  8. C语言oo1cpp怎么进,cpp 第八章第7题解决办法
  9. Python出现‘ascii‘ codec can‘t encode characters...的解决方法
  10. 生成小程序二维码传参scene的问题
  11. 各类w3school网站的区别小记
  12. pro android python with sl4a,Pro Android Python with SL4A
  13. C 程序设计语言——第七章练习题
  14. 小米6自动重启android,小米6充电重启怎么办?小米6充电自动重启解决方法介绍...
  15. 信息系统集成考试中pv,ev,ac相关概念及运算
  16. SSM人才交流平台的开发毕业设计-附源码
  17. 【trick 5】warmup —— 一种学习率调优方法
  18. 企业邮箱的好处有哪些?
  19. Java 使用注解检验手机号
  20. jsessionid用途

热门文章

  1. Windoes下安装配置flutter环境
  2. 计算用户输入的数字的平均数,并输出大于平均数的数字输出
  3. php自定义中文分词方法,PHPAnalysis中文分词类详解
  4. 神策数据独家丨100% 还原小仙炖 618 私域个性化服务实践
  5. 【译】 Web Components 的高级工具
  6. phpstrom 里面的 文件修改后 的*怎样设置
  7. 洛谷 P2519 [HAOI2011]problem a
  8. python爬虫入门(六) Scrapy框架之原理介绍
  9. Swift数据类型(一)
  10. 二十六个月Android学习工作总结