今天有个应用卡死了,登上服务器查看发现有5个僵尸进程
先说下什么是僵尸进程,在 Linux 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程。当用ps命令观察进程的执行状态时,看到这些进程的状态栏为defunct。僵尸进程是一个早已死亡的进程,但在进程表(processs table)中仍占了一个位置(slot)。
查看僵尸进程的命令
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
一般来说,僵尸进程可以直接kill PID
如果 kill 无效,可以尝试通过ps命令找出僵尸进程的父进程ID并kill
但是如果僵尸进程的父进程ID为1,比如我今天遇见的这种情况,是没有办法kill的
唯一的解决办法就是重启服务器