Linux僵尸进程堆栈分析,linux系统僵尸进程
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系统僵尸进程相关推荐
- linux内核调度 0号进程,Linux内核源代码情景分析---第四章 进程与进程调度
4.1 进程四要素 什么是进程? 1:有一段代码段供其执行,这代码段不一定是进程所专用,可以与其他进程公用. 2:每个进程有其专用的系统空间的堆栈(栈)[这个栈是进程起码的"私有财产&quo ...
- (转载)Linux内核源代码情景分析---第四章 进程与进程调度
原文地址: http://blog.sina.com.cn/s/blog_6b94d5680101vkiv.html 引用这篇文章主要是因为,你经常会发现不root的情况下,完全无法ping通,而又不 ...
- Linux中断与进程切换,结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程...
@ 实验环境 OS Linux cj-virtual-machine 5.3.0-51-generic 虚拟机 QEMU 内核版本 5.3.4 调式方法 GDB PS:调试环境安装请看上一篇博客汇编级 ...
- linux进程源码分析,Linux内核源代码分析——口述程序猿如何意淫进程(一)
Jack:hi,淫龙,有空吗?我们来讨论一下Linux的进程吧. 我:没空.不要烦我,最近正在郁闷. Jack:郁闷啥呀? 我:最近大学城通了轻轨,房价涨得厉害,骂了隔壁. Jack:不要郁闷了,来研 ...
- linux进程上下文切换的具体过程,Linux实验三 结合中断上下文切换和进程上下文切换分析Linux内核一般执行过程...
fork系统调?创建?进程,也就?个进程变成了两个进程,两个进程执?相同的代码,只是fork系统调?在?进程和?进程中的返回值不同. 打开linux-5.4.34/arch/x86/entry/sys ...
- linux内核创建用户,分析Linux内核创建一个新进程的过程
谢文杰 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验目的 阅 ...
- linux启动过程剖析,分析Linux系统的启动过程
导读 一直使用linux系统,却对系统启动过程及系统初始化和各种服务的启动不太清楚.今天终于搞明白整个是怎么一回事了.本来想自己写篇文章,刚好在网上看到一篇不错的介绍,很详细,就直接拿来了. Linu ...
- linux分区变为空闲,分析linux系统中磁盘空闲空间的管理方法
分析linux系统中磁盘空闲空间的管理方法 汪建国 摘要:要把文件信息存放在存储介质上,必须先找出存储介质上可供使用的空闲块.如何实现存储空间的分配和收回,取决于对空闲块的管理方法,主要有两种对磁盘存 ...
- linux内核oops消息分析,Linux 编程时遇到 Oops 提示该如何排查?
原标题:Linux 编程时遇到 Oops 提示该如何排查? 各位工程师在Linux下开发程序时,有没有遇到由于系统中存在某些小故障而跳出了"Oops"提示的情况,此时你是如何排查故 ...
最新文章
- 《设计模式 系列》- 面向对象六大原则
- 构建前瞻性应用架构的优秀实践
- MySQL 约束类型
- mysql9索引实战_mysql 索引实战 | 学步园
- iphone SHSH证书
- 当执行进程ctrl+c关闭不了的时候的解决方法
- IntelliJ IDEA快捷键(Shortcut)官方文档地址
- 详解 Android 的 Activity 组件
- 信息学奥赛一本通 1229:电池的寿命 | OpenJudge NOI 4.6 2469:电池的寿命
- 常见的目标检测中的背景建模方法总结
- CubeMX 的使用实例详细(04.6)- STM32F103的 - 定时器设定 - callback调用 - 实现1S的定时更新LED灯
- ubuntu GIT 安装与使用
- 旧金山散记(一):第一次在美国打车
- 官网Tomcat下载方法(亲测)
- 重启Android手机代码
- Tableau:与Python集成
- 漏洞建议:实施 TLS_FALLBACK_SCSV。此外,要么完全禁用 SSLv3,要么禁用以通过 SSLv3 的 CBC 模式操作的所有密码套件
- 量子通信借助计算机,量子通信技术核心——量子计算算法
- mysql 关闭一个实例_mysql 多实例关闭、启动、查看状态
- java 1st 2nd 3rd 4th_1st怎么输入excel “st”在1的右上角 EXCEL excel 1st 2nd 3rd 4th 怎么设置上标 如何改为上标...
热门文章
- 深算院入选“数字政府建设赋能计划”成员单位
- u盘iso安装服务器系统怎么安装win7系统安装方法,u盘iso安装系统,小猪教您u盘怎么安装win7系统...
- Linux之恢复删除的数据
- 秀米数字编号实用知识点
- Spring Boot实践 | 利用Spring Security快速搞定权限控制
- Python的正则表达式和re模块
- 【数据科学】使用Python建立你的数据处理肌肉记忆
- Aircrack-ng 工具箱
- 在线TSV转纯文本工具
- 计算机课程进制的转换,计算机课程设计 进制转换