Ubuntu提示存在僵尸进程应该如何处理
今天登上控制台,发现了如下输出
There are 20 zombie processes
控制台输出zombie(僵尸)
第一反应是木马(我新服务器才装一天哪来的木马,而且Ubuntu怎么可能自己扫描出木马,甚至20多个?)
一查发现,果然不是我所想象的那样 它的定义(转载自简书)是这样的:
APEU2对于 僵尸进程(zombie process)的定义: In UNIX System terminology, a process that has terminated, but whose parent has not yet waited for it, is called a zombie. 父线程在子线程结束时,没有进入wait方法获取子线程的终止状态,子线程终止后就是僵尸进程。
僵尸进程(zombie process)的危害
子线程结束时会发送SIGCHLD信号给父线程,父线程进入wait方法释放相关资源,关闭打开的文件等。当父线程不知道子线程已结束,不进入wait方法释放相关资源,大量的僵尸进程会占用系统大量资源;另一方面子进程的进程号还一直被占用,当大量的僵尸进程出现时会导致系统无法创建新的进程。
果然不是什么好东西
那么我们可以输入如下命令来查看所有僵尸进程:
ps aux | grep Z
控制台输出
我们用如下命令解决
ps -eo pid,ppid,stat,cmd | grep 'Z' # 查找僵尸进程及其父进程
kill -HUP <PPID> # 向父进程发送 SIGHUP 信号,其中<PPID>为父进程ID
或者你也可以选择终止父进程
请确保你的父进程未运行任何核心服务再进行kill
kill -9 <PPID>