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

转自: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

转载于:https://www.cnblogs.com/sky-heaven/p/5922277.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

九月十月百度人搜,阿里巴巴,腾讯华为笔试面试八十题(第331-410题)

九月十月百度人搜&#xff0c;阿里巴巴&#xff0c;腾讯华为小米搜狗笔试面试八十题 &#xff08;参与算法&面试题交流与讨论&#xff0c;请加群&#xff1a;30382647&#xff09;引言 自发表上一篇文章至今&#xff08;事实上&#xff0c;上篇文章更新了近3个月之久&#…

mysql性能结构优化原理_MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化...

一、数据库结构优化(非常重要)1.1 数据库结构优化目的1、减少数据冗余&#xff1a;(数据冗余是指在数据库中存在相同的数据&#xff0c;或者某些数据可以由其他数据计算得到)&#xff0c;注意&#xff0c;尽量减少不代表完全避免数据冗余&#xff1b;2、尽量避免数据维护中出现…

python git是什么_python爬虫之git的使用

一、简单认识&#xff1a; 1、初始化文件夹为版本控制文件夹&#xff0c;首先建立一个文件夹&#xff0c;进入这个文件夹以后输入git init初始化这个文件夹。2、Git几种位置概念 1、本地代码&#xff1a;本地更改完代码以后&#xff0c;虽然是存放在git的文件夹里面&#xff0c…

产品经理网站数据分析之测量问题现状(二)

本章续接上文&#xff0c;主要讲解流程图的绘制要领&#xff0c;以及示例。 1、基础流程图 基础流程图应该简明扼要地描述出流程的主要结构&#xff0c;在弄清楚流程的起点、终点&#xff0c;以及主要步骤后&#xff0c;按照流程的先后顺序&#xff0c;按照要展示的流程长短比例…

键盘流的逆袭- Idea 中使用 VIM mode 提高生成效率

Idea 中使用 VIM mode 提高生成效率 安装配置 Idea 的 vim 插件 先挖坑&#xff0c;后续再填。这个毫无技术含量&#xff0c;不写了&#xff0c;自己去搜吧。 快捷键代替鼠标 打开文件 按两下 shift 键 > 输入类目文件名按 command e &#xff0c;打开最近编辑的文件列表&a…

git 撤销挂起的更改_Timer计时任务因系统时间的修改导致挂起解决方案

之前开发的一款运行在定制Android设备上的一个实时监控程序发生了一个很奇怪的问题&#xff1a;关机状态下放置了半个月左右的时间之后&#xff0c;再次开机使用&#xff0c;使用到一半的时候&#xff0c;显示界面就卡死在某一个状态下了(显示界面只显示一行文字&#xff0c;代…

yii urlmanager配置post不生效_一文带你彻底学会 Git Hooks 配置

你好&#xff0c;我是小桔&#xff0c;是一个没有感情的代码崽。今天给大家介绍一下 Git Hooks&#xff0c;相信 Git 大家都在用吧&#xff0c;Git 除了用作版本控制&#xff0c;还有许多高级功能&#xff0c;Git Hooks 就是其中之一。本文环境&#xff1a;Git 版本&#xff1a…

Tiff – 值得你体验一下的可视化的字体对比工具

Tiff 是一款字体对比工具&#xff0c;可视化对比两种字体之间的差异。这是一个工具来帮助比较两种字体&#xff0c;同时学习排版。在这一点上&#xff0c;谷歌 Web 字体作为 Tiff 外部字体文件的唯一来源。由于应用程序使用的一些功能需要 HTML5 和 CSS3 支持&#xff0c;因此请…

[.NET] 建构子中传递子对象的对象

在设计对象继承的时候&#xff0c;父对象建构子会需要一些参数&#xff0c;这些参数可以由子对象建构子透过base关键词来提供。 namespace Test001 {public class ParentClass{// Constructorspublic ParentClass(IEnumerable<string> dataCollection){this.DataCollecti…

php基础教程(三):变量

1、php变量规则 变量以 $ 符号开头&#xff0c;其后是变量的名称变量名称必须以字母或下划线开头变量名称不能以数字开头变量名称只能包含字母数字字符和下划线&#xff08;A-z、0-9 以及 _&#xff09;变量名称对大小写敏感&#xff08;$y 与 $Y 是两个不同的变量&#xff09;…

操作系统实验文件管理_系统设计硬核知识(5)——操作系统的文件管理

操作系统对计算机的管理包括两个方面&#xff1a;硬件资源和软件资源。硬件资源的管理包括CPU 的管理、存储器的管理、设备管理等&#xff0c;主要解决硬件资源的有效和合理利用问题。软件资源包括各种系统程序、各种应用程序、各种用户程序&#xff0c;也包括大量的文档材料、…

错误 0xc0202049: 数据流任务 1: 无法在只读列“ID”中插入数据

数据库导入导出时总失败&#xff0c;错误信息如下&#xff1a; 正在验证 (错误) 消息错误 0xc0202049: 数据流任务 1: 无法在只读列“ID”中插入数据。 (SQL Server 导入和导出向导) 错误 0xc0202045: 数据流任务 1: 验证列元数据失败。 (SQL Server 导入和导出向导) 错误 0xc0…

python中的items方法_Python 字典的items()方法和iteritems()方法有什么不同?【面试题详解】...

今天爱分享给大家带来Python 字典的items()方法和iteritems()方法有什么不同?【面试题详解】&#xff0c;希望能够帮助到大家。 字典是 Python 语言中唯一的映射类型。映射类型对象里哈希键(键&#xff0c;key)和指向的对象&#xff08;值&#xff0c;value)是多对一的关系&am…

大网高级技术笔记(一)

防伪码&#xff1b;黑发不知勤学早&#xff0c;白首方悔读书迟本章目标&#xff1a;理解消化动态路由协议与OSPF协议并应用于实际工作中。第一章 动态路由协议一、按照路由执行的算法分类距离矢量路由协议&#xff1a;RIP、IGRP链路状态路由协议&#xff1a;OSPE、IS-IS二、RIP…

容器类基础篇(一)

容器类&#xff1a;用来解决数组具有固定尺寸而使得灵活性受限的问题。基本的容器类&#xff08;集合类&#xff09;有&#xff1a;List、Set、Queue、Map。 Java容器类类库的用途是用来“保存对象”&#xff0c;这分为两个不同的大类&#xff1a; 1.Collection&#xff08;集合…

阿里MySQL读写一致_阿里面试题:如何保证缓存与数据库的双写一致性?

作者&#xff1a;你是我的海啸出处&#xff1a;https://blog.csdn.net/chang384915878/article/details/86756463只要用缓存&#xff0c;就可能会涉及到缓存与数据库双存储双写&#xff0c;你只要是双写&#xff0c;就一定会有数据一致性的问题&#xff0c;那么你如何解决一致性…

反射小应用之DataTable和ListT互操作

反射小应用之DataTable和List<T>互操作 在程序中&#xff0c;往往会遇到一些小情况&#xff0c;就是数据库取出来的时候为了方便直接将数据通过存储在DataSet或DataTable中&#xff0c;这样做的一个后果是在日后的的对数据进行”细“操作时&#xff0c;就发现它可能没有L…

python适合什么样的人群_什么样的人比较适合选择Python开发+人工智能技术?

原标题&#xff1a;什么样的人比较适合选择Python开发人工智能技术&#xff1f; 互联网行业最近几年来确实成为了竞相追捧的行业&#xff0c;人工智能、大数据的不断发展让Python开发技术成为了继Java开发之后的又一热门编程语言。我们都知道&#xff0c;想要学习Python开发编程…

java 8 方法引用(method references)

1 什么是方法引用&#xff08;method references&#xff09;java 8 添加了一个很熟悉但是又很陌生的符号::。 你也许会看到这样的代码System.out::println其实就是方法引用&#xff08;method references&#xff09;。由于java 8 把方法/函数也作为第一输入参数。所以你会看到…

SWT中Button事件的几种不同写法

1&#xff0e;匿名内部类写法button.addSelectionListener(new SelectionAdapter(){Overridepublic void widgetSelected(SelectionEvent e){.....}});释&#xff1a;当button被单击时&#xff0c;底层就会检查button是否注册了相对就的监听器&#xff0c;如果有&#xff0c;底…