1 什么是僵尸进程:

当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出

,子进程被init接管,子进程退出后init会回收其占用的相关资源。

2 怎样来清除僵尸进程:

1.改写父进程,在子进程死后要为它收尸。具体做法是接管SIGCHLD信号。子进程死后,会发送SIGCHLD信号给父进程,父进程收到此信号后,执行waitpid()函数为子进程收尸。这是基于这样的原理:就算父进程没有调用wait,内核也会向它发送SIGCHLD消息,尽管对的默认处理是忽略,如果想响应这个消息,可以设置一个处理函数。

2.把父进程杀掉。父进程死后,僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。

3 僵尸进程的危害:

在Unix系统管理中,当用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为defunct,这就是所谓的“僵尸”进程。“僵尸”进程是一个早已死亡的进程,但在进程表(processs table)中仍占了一个位置(slot)。由于进程表的容量是有限的,所以,defunct进程不仅占用系统的内存资源,影响系统的性能,而且如果其数目太多,还会导致系统瘫痪。

这里介绍linux 环境下的处理僵尸进程的方法:

使用  ps -efl|awk '$2~/Z/{print}' 查找僵尸进程

[root@rac3 ~]#  ps -efl|awk '$2~/Z/{print}'

0 Z root     28212 28201  0  85   0 -     0 exit   Sep25 ?        00:00:00 [xrdb]

或者使用如下语句

[root@rac3 ~]# ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'

Z    28201 28212 [xrdb]

如果僵尸进程很多可以使用如下语句:

ps -efl | awk '$2~/Z/{print“kill -9 ” $4,$5}'

生成杀进程的脚本。

如果kill子进程的无效,则kill 其父进程来解决问题

[root@rac3 ~]# kill -HUP 28201

[root@rac3 ~]# ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'

[root@rac3 ~]# top

top - 19:38:50 up 21 days,  3:42,  1 user,  load average: 0.00, 0.00, 0.00

Tasks: 173 total,   2 running, 170 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   4044784k total,  3606476k used,   438308k free,   208260k buffers

Swap:  4192956k total,        0k used,  4192956k free,  2689704k cached

上述方法只在测试环境实施,如在生产环境,请评估其安全性

Linux僵尸进程堆栈分析,linux系统僵尸进程相关推荐

  1. linux内核调度 0号进程,Linux内核源代码情景分析---第四章 进程与进程调度

    4.1 进程四要素 什么是进程? 1:有一段代码段供其执行,这代码段不一定是进程所专用,可以与其他进程公用. 2:每个进程有其专用的系统空间的堆栈(栈)[这个栈是进程起码的"私有财产&quo ...

  2. (转载)Linux内核源代码情景分析---第四章 进程与进程调度

    原文地址: http://blog.sina.com.cn/s/blog_6b94d5680101vkiv.html 引用这篇文章主要是因为,你经常会发现不root的情况下,完全无法ping通,而又不 ...

  3. Linux中断与进程切换,结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程...

    @ 实验环境 OS Linux cj-virtual-machine 5.3.0-51-generic 虚拟机 QEMU 内核版本 5.3.4 调式方法 GDB PS:调试环境安装请看上一篇博客汇编级 ...

  4. linux进程源码分析,Linux内核源代码分析——口述程序猿如何意淫进程(一)

    Jack:hi,淫龙,有空吗?我们来讨论一下Linux的进程吧. 我:没空.不要烦我,最近正在郁闷. Jack:郁闷啥呀? 我:最近大学城通了轻轨,房价涨得厉害,骂了隔壁. Jack:不要郁闷了,来研 ...

  5. linux进程上下文切换的具体过程,Linux实验三 结合中断上下文切换和进程上下文切换分析Linux内核一般执行过程...

    fork系统调?创建?进程,也就?个进程变成了两个进程,两个进程执?相同的代码,只是fork系统调?在?进程和?进程中的返回值不同. 打开linux-5.4.34/arch/x86/entry/sys ...

  6. linux内核创建用户,分析Linux内核创建一个新进程的过程

    谢文杰 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验目的 阅 ...

  7. linux启动过程剖析,分析Linux系统的启动过程

    导读 一直使用linux系统,却对系统启动过程及系统初始化和各种服务的启动不太清楚.今天终于搞明白整个是怎么一回事了.本来想自己写篇文章,刚好在网上看到一篇不错的介绍,很详细,就直接拿来了. Linu ...

  8. linux分区变为空闲,分析linux系统中磁盘空闲空间的管理方法

    分析linux系统中磁盘空闲空间的管理方法 汪建国 摘要:要把文件信息存放在存储介质上,必须先找出存储介质上可供使用的空闲块.如何实现存储空间的分配和收回,取决于对空闲块的管理方法,主要有两种对磁盘存 ...

  9. linux内核oops消息分析,Linux 编程时遇到 Oops 提示该如何排查?

    原标题:Linux 编程时遇到 Oops 提示该如何排查? 各位工程师在Linux下开发程序时,有没有遇到由于系统中存在某些小故障而跳出了"Oops"提示的情况,此时你是如何排查故 ...

最新文章

  1. 《设计模式 系列》- 面向对象六大原则
  2. 构建前瞻性应用架构的优秀实践
  3. MySQL 约束类型
  4. mysql9索引实战_mysql 索引实战 | 学步园
  5. iphone SHSH证书
  6. 当执行进程ctrl+c关闭不了的时候的解决方法
  7. IntelliJ IDEA快捷键(Shortcut)官方文档地址
  8. 详解 Android 的 Activity 组件
  9. 信息学奥赛一本通 1229:电池的寿命 | OpenJudge NOI 4.6 2469:电池的寿命
  10. 常见的目标检测中的背景建模方法总结
  11. CubeMX 的使用实例详细(04.6)- STM32F103的 - 定时器设定 - callback调用 - 实现1S的定时更新LED灯
  12. ubuntu GIT 安装与使用
  13. 旧金山散记(一):第一次在美国打车
  14. 官网Tomcat下载方法(亲测)
  15. 重启Android手机代码
  16. Tableau:与Python集成
  17. 漏洞建议:实施 TLS_FALLBACK_SCSV。此外,要么完全禁用 SSLv3,要么禁用以通过 SSLv3 的 CBC 模式操作的所有密码套件
  18. 量子通信借助计算机,量子通信技术核心——量子计算算法
  19. mysql 关闭一个实例_mysql 多实例关闭、启动、查看状态
  20. java 1st 2nd 3rd 4th_1st怎么输入excel “st”在1的右上角 EXCEL excel 1st 2nd 3rd 4th 怎么设置上标 如何改为上标...

热门文章

  1. 深算院入选“数字政府建设赋能计划”成员单位
  2. u盘iso安装服务器系统怎么安装win7系统安装方法,u盘iso安装系统,小猪教您u盘怎么安装win7系统...
  3. Linux之恢复删除的数据
  4. 秀米数字编号实用知识点
  5. Spring Boot实践 | 利用Spring Security快速搞定权限控制
  6. Python的正则表达式和re模块
  7. 【数据科学】使用Python建立你的数据处理肌肉记忆
  8. Aircrack-ng 工具箱
  9. 在线TSV转纯文本工具
  10. 计算机课程进制的转换,计算机课程设计 进制转换