Linux中的僵尸进程处理

僵尸进程介绍

僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源
kill -9发送SIGKILL信号将其终止,但是以下两种情况不起作用:
a、该进程处于"Zombie"状态(使用ps命令返回defunct的进程)。此时进程已经释放所有资源,但还未得到其父进程的确认。“Zombie"进程要等到下次重启时才会消失,但它的存在不会影响系统性能。
b、 该进程处于"kernel mode”(核心态)且在等待不可获得的资源。处于核心态的进程忽略所有信号处理,因此对于这些一直处于核心态的进程只能通过重启系统实现。进程在AIX 中会处于两种状态,即用户态和核心态。只有处于用户态的进程才可以用“kill”命令将其终止

查看方法

查看僵尸进程,利用命令ps,可以看到有标记为Z的进程就是僵尸进程。
#ps auwx  发现僵尸进程
用ps 命令和 grep命令寻找僵尸进程:
#ps -A -ostat,ppid,pid,cmd | grep -e ‘1
或者
top>> task (line)>> zombie
或者

all w/ tty,including other users 所有窗口和终端,包括其他用户的进程
u user-oriented
面向用户(用户友好)
-w,w wide output 宽格式输出
x processes w/o controlling ttys  在僵尸进程后面 会标

#ps axf  看进程树,以树形方式现实进程列表
#ps axm  会把线程列出来,在linux下进程和线程是统一的,是轻量级进程的两种方式。
#ps axu  显示进程的详细状态

使用kill -HUP 12339 来杀掉这个僵尸进程;
再次运行ps -A -ostat,ppid,pid,cmd | grep -e ‘2’ 来确认是否将僵尸进程杀死;
如果kill 子进程的无效,可以尝试kill 其父进程来解决问题,例如上面父进程pid 为12334,那么我们就运行 kill -HUP 12334 来解决问题;
注意 :
用了kill -15,kill -9以后 之后反而会多出更多的僵尸进程

例子 :

#ps -ax|grep "pid
或者
#ps -A|grep -i 进程名

#kill -9 pid 

解决办法

怎样来清除僵尸进程:
1.改写父进程,在子进程死后要为它收尸。具体做法是接管SIGCHLD信号。子进程死后,会发送SIGCHLD信号给父进程,父进程收到此信号后,执行waitpid()函数为子进程收尸。这是基于这样的原理:就算父进程没有调用wait,内核也会向它发送SIGCHLD消息,尽管对的默认处理是忽略,如果想响应这个消息,可以设置一个处理函数。
2.把父进程杀掉。父进程死后,僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。
问题解决:

查看该进程的父进程ps -aux | grep 178744

看到该进程的父进程是89552即hdfs的balancer进程

停掉balancer进程,不久datanode的进程就被杀掉了

重新启动datanode进程:hadoop-daemon.sh start datanode,HDFS状态正常,问题解决

疑问:

hdfs的balancer进程为什么会导致datanode成为僵尸进程?

避免wait,waitpid的产生

产生原因:
1.在子进程终止后到父进程调用wait()前的时间里,子进程被称为zombie。
2.网络原因有时会引起僵死进程。

解决方法:
1.设置SIGCLD信号为SIG_IGN,系统将不产生僵死进程。
2.用两次fork(),而且使紧跟的子进程直接退出,是的孙子进程成为孤儿进程,从而init进程将负责清除这个孤儿进程。

扩展

终止后台运行中进程

vi &
jobs
kill -s 9 4403
jobs

在这里插入图片描述
终止所有的进程:

killall nginx
ps aux | grep nginx

在这里插入图片描述

参考链接 :
** Linux 的僵尸(zombie)进程** : https://mp.weixin.qq.com/s/1_jf5ezNd–TGGJgwmyV5A

iostat 显示 CPU 报告、磁盘/分区输入及输出统计数据 : https://blog.csdn.net/stevenchen1989/article/details/104745034

进程管理 - kill 和 killall 终止进程及其相关的进程 :https://blog.csdn.net/stevenchen1989/article/details/104766179?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

https://blog.csdn.net/husteggegg/article/details/39177209?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

https://www.cnblogs.com/Anker/p/3271773.html
https://baike.baidu.com/item/%E5%83%B5%E5%B0%B8%E8%BF%9B%E7%A8%8B/1036577?fr=aladdin

https://blog.csdn.net/u010150046/article/details/76461316?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task


  1. Zz ↩︎

  2. Zz ↩︎

发布了362 篇原创文章 · 获赞 62 · 访问量 12万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览