linux shell中清理僵尸进程
今天登录到服务器上时,系统打印有6 zombie processes存在,于是用kill -9去清理掉这些僵尸进程,命令执行完后没有错误,可是再次查找时,发现僵尸进程仍然存在,不知道怎么清理了,上网找了一下,学习一下。 僵尸进程定义与查找 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用 waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程。 如何查看linux系统上的僵尸进程,如何统计有多少僵尸进程? #ps -ef | grep defunct 或者 #ps aux | grep defunct 或者查找状态为Z的进程,Z就是代表zombie process,僵尸进程的意思。 另外使用top命令查看时有一栏为S,如果状态为Z说明它就是僵尸进程。top命令中也统计了僵尸进程。 Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie top - 10:05:03 up 11 days, 1:17, 7 users, load average: 0.00, 0.01, 0.05