今日发现服务器上多了一些名称为[sh] <defunct>的进程,使用kill PID又无法杀死进程,应该是僵尸进程了。

查询了一些资料后,发现,是crontab中的程序执行,导致输出大量信息到标准设备上,输出的信息又触发了系统的sendmail,把信息当作邮件发给用户。

把输出重定向到空设备即可解决此类问题了,把crontab中的任务计划改为/home/job/*.sh > /dev/null 2>&1,把标准输出重定向到空设备就可以了。

更改了crontab之后过一会[sh] <defunct>进程就会消失,发送邮件的/usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t进程也会消失的。(有时候只有[sh] <defunct>进程,没有sendmail的进程)