top:
    top与进程 - 图1
    第一行:“所有启动的进程数”、“正在运行的进程数”、“挂起的进程数”、“停止的进程数”、“僵尸进程数”
    第二行:用户空间占用CPU百分比”、“内核空间占用CPU百分比”、“用户空间内改变过优先级的进程占用CPU百分比”、“空闲CPU百分比”、“等待输入输出CPU时间百分比”、“CPU服务于硬件中断所耗费的时间总额”、“CPU服务软中断所耗费的时间总额”、“Steal Time”
    第三行: “物理内存总量”、“空闲物理内存”、“已使用的物理内存”、 “内核缓存内存量”。
    第四行: “交换区总量”、“已使用交互区总量”、“空闲交换区总量”、“缓冲的交换区总量”

    摘抄于:https://www.yuque.com/u93655/lapq56/ixgzby

    【Linux】如何查找和关闭僵尸进程
    方法一:
    第一步:用ps和grep命令寻找僵尸进程
    ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
    命令注解:
    -A 参数列出所有进程
    -o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数
    因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程,运行结果参考如下
    image.png

    第二步:我们可以使用 kill -HUP 22789来杀掉这个僵尸进程
    运行后,可以再次运行ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’来确认是否已经将僵尸进程杀死
    如果kill 子进程的无效,可以尝试kill 其父进程来解决问题,例如上面例子父进程pid是 12334。
    kill -HUP 12334

    方法二:
    也可以用 ps -aux |grep Z 来查看僵尸进程
    image.png
    从僵尸进程的概念可以看出,父进程没有结束导致的,我们把父进程杀死,父进程就会寻找他自己创建的子进程,从而杀死僵尸进程。所以我们要杀死父进程就可以。所以第一步要找到父进程 ps -ef | grep defunct_process_pid(僵尸进程pid) 然后执行,kill -s 9 父进程的pid。演示如下:
    top与进程 - 图4
    可以看出,先找到僵尸进程的pid,我这里使用ps -aux |grep make 是因为我的c文件是make开头的。然后在找到僵尸进程的父进程的pid 11781
    然后杀死 kill -s 9 11781
    top与进程 - 图5