# 僵尸进程

**Q：什么是僵尸进程？**

一个进程任务结束调用exit命令主动退出的时候，操作系统会释放其占用的内存、打开文件等资源。该进程已经处于非活动状态，不会执行任何的任务；但它并没有真正的被销毁，而是变成了一个僵尸进程，占据着一个Pid。只有当该进程的父进程通过系统调用（wait/waitpid）获取子进程的状态时，这个进程才会真正的结束，释放掉Pid。

所以，僵尸进程即进程已经主动退出，但还没有被父进程通过系统调用来释放Pid。

**Q：如何查看僵尸进程？**

1、使用top命令，可以查看系统中僵尸进程的数量

![](https://2767359913-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M69DxRUfNByI1K0lVYU%2Fsync%2F2d45184586927b26f2eec9eafef8c17bac7cce8e.png?generation=1588235887280385\&alt=media)

2、使用`ps -aux | grep Z`命令，STAT为Z的进程就是僵尸进程

![](https://2767359913-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M69DxRUfNByI1K0lVYU%2Fsync%2Fc876c93786c620c77fc90d93c8978bf139c56976.png?generation=1588235887591263\&alt=media)

**Q：为什么会产生僵尸进程？**

程序Bug，或者用户的一些非常用操作

**Q：如何处理僵尸进程？**

1、执行命令`kill -s SIGCHILD <PPID>`，通过父进程回收已经退出的子进程 2、杀掉父进程`kill -9 <PPID>` 3、重启系统

**Q：父进程为1的僵尸进程？**
