一、概述

僵尸进程是怎么产生的

当子进程退出时,父进程没有调用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       0.0  0.0            ?        Z    :   : [check_haproxy.s] <defunct>
root 0.0 0.0 ? T : : /opt/script/check_haproxy.sh
root 0.0 0.0 ? Z : : [check_haproxy.s] <defunct>
root 0.0 0.0 ? T : : /opt/script/check_haproxy.sh
root 0.0 0.0 ? Z : : [check_haproxy.s] <defunct>
root 0.0 0.0 ? T : : /opt/script/check_haproxy.sh
root 0.0 0.0 ? Z : : [check_haproxy.s] <defunct>
root 0.0 0.0 ? T : : /opt/script/check_haproxy.sh
root 0.0 0.0 ? Z : : [check_haproxy.s] <defunct>
root 0.0 0.0 ? T : : /opt/script/check_haproxy.sh
root 0.0 0.0 ? Z : : [check_haproxy.s] <defunct>

三、杀死僵尸进程

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

kill - 进程id

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

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

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

本文参考链接:

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

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

linux下僵尸进程的发现与处理的更多相关文章

  1. Linux的僵尸进程产生原因及解决方法

    Linux的僵尸进程产生原因及解决方法: 1. 产生原因: 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.通过ps命令查看 ...

  2. linux清理僵尸进程

    查看服务器时发现好3个僵尸进程,僵尸进程存在好多天了,一直不会处理,留到了今天,顺便清理下僵尸进程吧 top命令中统计了僵尸进程,是第二行最后一项3 zombie. 或者使用下面的命令得到僵尸进程数量 ...

  3. Linux下php-fpm进程过多导致内存耗尽问题

    这篇文章主要介绍了解决Linux下php-fpm进程过多导致内存耗尽问题,需要的朋友可以参考下   最近,发现个人博客的Linux服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是 ...

  4. (转)Linux下java进程CPU占用率高-分析方法

    Linux下java进程CPU占用率高-分析方法 原文:http://itindex.net/detail/47420-linux-java-%E8%BF%9B%E7%A8%8B?utm_source ...

  5. Linux下java进程CPU占用率高分析方法

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  6. linux下对进程按照内存使用情况进行排序

    linux下对进程按照内存使用情况进行排序的命令为:ps aux --sort -rss 详细解说参见 http://alvinalexander.com/linux/unix-linux-proce ...

  7. linux下查看进程占用端口和端口占用进程命令

    Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端 ...

  8. linux 下的进程管理工具 supervisor

    在linux下监控进程: 1)yum install python-setuptools   linux下的python安装工具 2)easy_install supervisor     安装sup ...

  9. linux下监控进程需掌握的四个命令

    linux下监控进程需掌握的四个命令   在LInux系统下,最困难的工作之一就是跟踪正在系统中运行的程序,尤其是现在,图形桌面使用很多的程序,只是为了生成一个桌面环境,系统中运行了太多的进程,幸运的 ...

随机推荐

  1. 实验吧——因缺思汀的绕过(sql with rollup)

    题目地址:http://ctf5.shiyanbar.com/web/pcat/index.php 通读源码,得知出flag的条件 1.需要post提交uname以及pwd,否则直接die了 if ( ...

  2. maven 学习---Maven教程

    Apache Maven是一个软件项目管理和综合工具.基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件. 本教程将介绍如何使用Maven在Java开发,或任何其 ...

  3. fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC

    出现如下错误: fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires ...

  4. pymysql操作(老版本的,新版有基础不同)

    导入库 import pymysql 创建链接 conn=pymysql.connect(host='127.0.0.1',port='3306',user='root',passwd='123456 ...

  5. 分布式异步框架celery

    Celery 1.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组 ...

  6. 05、ip划分+网络配置+虚拟化基础+基本路由

    -- IP   IANA (Internet Assigned Numbers Authority) ,Internet号分配机构.负责对IP地 址分配规划以及对TCP/UDP公共服务的端口定义.国际 ...

  7. Centos6.5 下安装 tmux(免编译)

    环境:Centos6.5是新安装的,没有安装过其它的软件包.思路是安装epel的源后再安装tmux. yum install epel-release # 安装Linux的 epel 的yum源 yu ...

  8. Python面试题(2)

    1.一行代码实现1-100的和 ? 1 2 3 print(sum(range(1,101))) #range中的参数是1<=i<101 #sum是计算参数的和 2.在函数内部改变全局变量 ...

  9. libpcap工具包使用go交叉编译开发android

    命令使用 libpcap交叉编译 cd /tmpwget http://www.tcpdump.org/release/libpcap-1.8.1.tar.gztar xvf libpcap-1.8. ...

  10. ubuntu下vi/vim 的基本用法

    https://blog.csdn.net/weixin_37657720/article/details/80645991 :q!    不保存强制推出. :wq   保存并退出.