如何杀掉D状态的进程?[zt]【转】
转自:http://blog.csdn.net/chinalinuxzend/article/details/4288791
[-]
- 如何杀掉D状态的进程zt
- 相关博文
原贴: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]【转】相关推荐
- 如何杀掉D,Z状态的进程
original url: https://blog.csdn.net/bytxl/article/details/41749063 https://blog.csdn.net/qq_34312386 ...
- 操作系统(二 )| 进程管理初探(前趋图、程序执行、进程的定义特征基本状态,进程的创建终止,阻塞唤醒,挂起激活)
文章目录 前趋图和程序执行 前趋图 程序的顺序执行 程序的并发执行 进程的定义和特征 进程的基本状态 就绪状态 运行状态 阻塞状态 挂起状态 进程控制块(PCB) 作用: 块中信息: PCB的组织方式 ...
- 线程的状态、进程的状态
一.线程的状态 新建状态.就绪状态.阻塞状态.死亡状态. 1.新建状态 新创建一个线程对象. 2.就绪状态 线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于"可运行 ...
- linux 杀掉php,Linux_在Linux系统中使用xkill命令杀掉未响应的进程,我们如何在Linux中杀掉一个资 - phpStudy...
在Linux系统中使用xkill命令杀掉未响应的进程 我们如何在Linux中杀掉一个资源/进程?很明显我们会找出资源的pid然后用kill命令. 说的更明白一点,我们可以找到某个资源(比如termin ...
- linux进程状态d状态,linux – 进程永久停留在D状态
我有一个问题,在Ubuntu 10.04.3 LTS上陷入D状态的某些进程. 自11月5日(今天是12月6日)以来,他们一直处于这种状态.我知道这些是不间断的睡眠状态,通常与等待来自硬盘等硬件的数据有 ...
- OS/处理器状态+中断+进程
处理器状态 核心态与用户态的转换 从用户态到内核态:中断和异常是用户态到内核态转换仅有的途径(系统调用.中断或者异常). 从内核态到用户态:计算机提供一条特权指令:加载程序状态字. 程序状态字 计算机 ...
- Android退出APP 并杀掉相关的所有进程
Android退出APP 并杀掉相关的所有进程 代码如下: ActivityManager mActivityManager = (ActivityManager) mContext.getSyste ...
- Linux x86_64内核终止D状态的进程
在上一篇文章< Linux x86内核终止D状态的进程>中,我展示了32位x86系统中如何编码杀死D进程.本文我将展示一种64位x86系统上的方法. 说实话,64位系统上做 ...
- Linux如何终止D状态的进程
在百忙中抽出点时间帮温州皮鞋厂老板解决一个杀掉D进程的问题,虽然最终线上的机器被老板蹂躏挂了,我也没帮上什么实质性的忙,还是写点记录,以备查阅. 碰到这个问题,我第一个反应就是网搜解决 ...
最新文章
- mongodb 内建用户
- Java实现算法导论中反复平方法模取幂
- 把伪需求扼制在摇篮里-B端产品需求方法论
- 如何让鼠标跑不出来_洗衣机常年不清洗脏过马桶,教你一窍门,脏东西自己跑出来...
- 上海市二级c语言软件环境,上海市计算机二级C语言复习资料 word整理版.doc
- Spring Boot集成Redis缓存之RedisTemplate的方式
- Visual Studio 2013 突然不高亮,编译报错
- C语言oo1cpp怎么进,cpp 第八章第7题解决办法
- Python出现‘ascii‘ codec can‘t encode characters...的解决方法
- 生成小程序二维码传参scene的问题
- 各类w3school网站的区别小记
- pro android python with sl4a,Pro Android Python with SL4A
- C 程序设计语言——第七章练习题
- 小米6自动重启android,小米6充电重启怎么办?小米6充电自动重启解决方法介绍...
- 信息系统集成考试中pv,ev,ac相关概念及运算
- SSM人才交流平台的开发毕业设计-附源码
- 【trick 5】warmup —— 一种学习率调优方法
- 企业邮箱的好处有哪些?
- Java 使用注解检验手机号
- jsessionid用途