清理linux下僵尸进程的实例探讨

发布时间:2019-11-25编辑:脚本学堂
本文介绍下,在linux中,清理僵尸进程的一个例子,有需要的朋友,可以看看。

linux系统中,使用定时检测的脚本kill进程之后,该进程会僵死在里面,无法清理。

如果你也遇到了类似的情况,可以参考本文的方法,解决之。

假如,有以下进程:
 

复制代码 代码示例:

#ps aux |grep jb200.com.pl
root      3962  0.0  1.5   5652  3840 ?        Ss   10:13   0:00 /usr/bin/perl -w /root/script/jb200.com.pl
root      5135  0.0  0.2   3920   740 pts/0    S+   10:52   0:00 grep jb200.com.pl

# kill -9 3962
 

之后的进程状态:
 

复制代码 代码示例:
# ps aux |grep jb200.com.pl
root      3962  0.0  0.0      0     0 ?        Zs   10:13   0:00 [jb200.com.pl] <defunct>
root      5196  0.0  0.2   3916   668 pts/0    R+   10:52   0:00 grep jb200.com.pl

在此处,问题出现了,到这一步之后,再无法使用kill 来清除。
如果要继续清理的话,必须从调用的进程处来kill掉它。

继续ps命令
 

复制代码 代码示例:
#ps axjf
    1  2616  2616  2616 ?           -1 Ss       0   0:00 crond
 2616  3960  2616  2616 ?           -1 S        0   0:00  /_ crond
 3960  3962  3962  3962 ?           -1 Zs       0   0:00      /_ [jb200.com.pl] <defunct>
 3960  3970  2616  2616 ?           -1 S       51   0:00      /_ /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t

可以判断,调用的进程没有影响系统的其他任务在运行,所以可以直接kill父进程。
 

复制代码 代码示例:
# kill -9 3960
# ps aux |grep jb200.com.pl
root      5364  0.0  0.2   3916   676 pts/0    R+   10:58   0:00 grep jb200.com.pl

至此,顺利清除掉了僵尸进程。希望可以帮助大家解决相同的问题。