专栏首页python3linux下僵尸进程的发现与处理

linux下僵尸进程的发现与处理

一、概述

僵尸进程是怎么产生的

当子进程退出时,父进程没有调用wait函数或者waitpid()函数等待子进程结束,又没有显式忽略SIGCHLD信号,那么它将一直保持在僵尸状态,如果这时父进程结束了,init进程会自动接收这个子进程,为它收尸,但如果父进程是一个循环,不会结束,那么子进程就会一直保持僵死状态。 进程状态:

  • Z 僵尸
  • S 休眠
  • D 不可中断的休眠
  • R 运行
  • T 停止时跟踪

二、查看僵尸进程

ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'

命令注解:

  • -A 参数列出所有进程
  • -o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数

因为状态为 z或者Z 的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程 运行结果参考如下:

root     426489  0.0  0.0      0     0 ?        Z    13:58   0:00 [check_haproxy.s] <defunct>
root     427159  0.0  0.0   3920   380 ?        T    13:59   0:00 /opt/script/check_haproxy.sh
root     427161  0.0  0.0      0     0 ?        Z    13:59   0:00 [check_haproxy.s] <defunct>
root     428023  0.0  0.0   3920   384 ?        T    14:00   0:00 /opt/script/check_haproxy.sh
root     428025  0.0  0.0      0     0 ?        Z    14:00   0:00 [check_haproxy.s] <defunct>
root     429389  0.0  0.0   3920   384 ?        T    14:02   0:00 /opt/script/check_haproxy.sh
root     429390  0.0  0.0      0     0 ?        Z    14:02   0:00 [check_haproxy.s] <defunct>
root     430245  0.0  0.0   3920   380 ?        T    14:04   0:00 /opt/script/check_haproxy.sh
root     430247  0.0  0.0      0     0 ?        Z    14:04   0:00 [check_haproxy.s] <defunct>
root     431136  0.0  0.0   3920   384 ?        T    14:06   0:00 /opt/script/check_haproxy.sh
root     431137  0.0  0.0      0     0 ?        Z    14:06   0:00 [check_haproxy.s] <defunct>

三、杀死僵尸进程

一台服务器上产生了100多少僵死进程,而且每一僵死进程的父进程都不一样,如果用 

kill -9 进程id

一条一条的杀,那还不得累死我啊。

那么就应该想一条简单的命令,直接查找僵死进程,然后将父进程杀死~

ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

本文参考链接:

https://www.jianshu.com/p/2fa847da27cb

https://www.cnblogs.com/reality-soul/p/6343339.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Centos7 Python3安装

    下面的操作,按照步骤来就可以了,不要在中途cd 到别的文件目录下,要想查看效果可以用 lsj加上对应的目录,不需要切换进去。 首先不管你当前在哪个目录下,输入以...

    py3study
  • python-jenkins 模块安装

    为了便于对jenkins 进行命令行操作,因此使用Python 调用jenkins 的api。 需要安装模块 python-jenkins 模块。

    py3study
  • python sublime开发环境搭建

    在最后添加pytohn安装路径:;D:\Python27 3:验证python安装和配置成功:

    py3study
  • Go实现海量日志收集系统(三)

    coders
  • Django源码学习-12-ContextMixin 上下文

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(...

    小团子
  • 碎片化 | 第四阶段-23-自定义注解-视频

    如清晰度低,可转PC网页观看高清版本: http://v.qq.com/x/page/g05026wfgfl.html 注解 注解是附加到代码中的一些元信息...

    码神联盟
  • 遥感图像去雾文章解读

    基于暗原色先验和常见的雾霾成像模型。为了消除光环伪影,使用低通高斯滤波器来细化粗略估计的大气面纱。然后,重新定义传输,以防止颜色失真的恢复图像。该算法的主要优点...

    于小勇
  • Container及其内部进程监控剖析

    目前市场上的虚拟化技术种类很多,例如moby(docker)、LXC、RKT等等。在带来方便应用部署和资源充分利用的好处的同时,如何监控相应Container及...

    宜信技术学院
  • springboot2.0.3源码篇 - 自动配置的实现,发现也不是那么复杂

        女儿: “妈妈,你这么漂亮,当年怎么嫁给了爸爸呢?”     妈妈: “当年你爸不是穷嘛!‘     女儿: “穷你还嫁给他!”     妈妈: “那时...

  • 【Mockplus教程】如何批量修改组件属性

    选择多个组件,在属性面板上面会显示这些组件的共同属性,而属性值为其中一个组件的属性值, 改变属性面板上面的属性后将应用到所有组件上。 以改变文字大小和颜色...

    奔跑的小鹿

扫码关注云+社区

领取腾讯云代金券