早上起床收到告警邮件,XX服务器上有一个僵尸进程 ,登陆服务器,查询:
appuser 29060 29057 0 04:10 ? 00:00:00 [sh]
appuser 29555 29057 0 04:10 ? 00:00:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root 29057 2227 0 04:10 ? 00:00:00 CROND
CROND为系统的定时任务crontab,进程29060和29555是29057的子进程,也就是说,定时任务的执行产生了僵尸进程,进一步查询分析,crontab执行时,如果输出信息太多,可能会触发系统的
sendmail,把触发当做邮件发送给root,可以查看root用户的mail 文件大小进一步确定。
因此,为了避免这样的情况,添加crontab时,应该加入 “
> /dev/null 2>&1” 。
注意,直接kill掉僵尸进程可能会失败,此时需要kill掉他的父进程,子进程会自动被init进程接管,释放掉,如下图:
-
[appuser@order-web01 ~]$ ps -ef|grep 3770
-
root 3770 2227 0 Apr24 ? 00:00:00 CROND
-
appuser 3774 3770 0 Apr24 ? 00:00:00 [sh] <defunct>
-
appuser 4274 3770 0 Apr24 ? 00:00:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
-
appuser 29722 29057 0 15:11 pts/8 00:00:00 grep 3770
-
[appuser@order-web01 ~]$
-
[appuser@order-web01 ~]$
-
[appuser@order-web01 ~]$ ps -ef|grep 2227
-
root 2227 1 0 2019 ? 00:03:56 crond
-
root 3770 2227 0 Apr24 ? 00:00:00 CROND
-
appuser 29845 29057 0 15:11 pts/8 00:00:00 grep 2227
-
[appuser@order-web01 ~]$
-
[appuser@order-web01 ~]$
-
[appuser@order-web01 ~]$ kill -9 3770
-
[appuser@order-web01 ~]$ ps -ef|grep 2227
-
root 2227 1 0 2019 ? 00:03:56 crond
-
appuser 31906 29057 0 15:12 pts/8 00:00:00 grep 2227
-
[appuser@order-web01 ~]$
-
[appuser@order-web01 ~]$ ps -ef|grep 3770
-
appuser 32049 29057 0 15:13 pts/8 00:00:00 grep 3770
-
[appuser@order-web01 ~]$
阅读(10036) | 评论(0) | 转发(0) |