zoukankan      html  css  js  c++  java
  • linux 杀掉僵尸进程 (zombie process, defunct)

    本文说明为什么会出现僵尸进程 (zombie process, defunct),以及如何杀掉僵尸进程

    1. 为什么有僵尸进程

    僵尸进程出现在父进程没有回收子进程的 PCB 的时候,这个时候子进程已经结束,但是父进程没有回收它,所以保存了一份子进程的 PCB 在父进程的内核空间中。

    僵尸进程占用的是一个 PCB 结构体的内存空间,所以占用量不会太大,但是过多的僵尸进程就会出现内存泄露。

    2. 如何杀掉僵尸进程

    解决的办法就是给父进程发送一个终止的信号。例如 SIGKILL / SIGINT / SIGTERM 信号。

    只要父进程终止了,那么僵尸进程的 PPID 就变成了 init 进程。那么自然 init 进程就会回收子进程的 PCB。

    这样僵尸进程就被杀掉了。

    知道了原理和解决方法就好办了,下面的命令会自动 kill 所有的僵尸进程:

    ps -e -o ppid,stat | grep Z | cut -d" " -f2 | xargs kill -9

    命令说明: 

    ps -e -o ppid,stat

        打印所有的进程的 ppid (父进程号) 和 stat (进程状态)

    grep Z

        找出僵尸进程

    cut -d" " -f2

        取 ppid 字段

    xargs kill -9

        强制 kill 这些父进程

  • 相关阅读:
    转载:备份HyperV时需要避免的六大错误
    职场必读blog
    sps 2010 出错记录
    MySQL的一些常用命令
    JS 常用 函数
    批处理 启动/关闭 VMware服务
    SQL Server 复制 发布订阅(SQL Server 数据同步)
    JBoss7 入门指南
    SQLServer 数据库 远程备份
    QuickFix/J
  • 原文地址:https://www.cnblogs.com/weiweifeng/p/7464426.html
Copyright © 2011-2022 走看看