分类: LINUX
2012-11-02 15:38:41
前一段时间遇到的系统故障,以下是操作过程:
大晚上收到该服务器内存超高告警,ps aux发现有大量的/usr/sbin/sendmail进程,一开始将其kill掉:
ps -ax | grep sendmail | awk '{print $1}' | wc –l 统计了以下有1230个
ps -ax | grep sendmail | awk '{print $1}' |xargs kill –9 杀掉这些进程
但过一段时间,问题仍然出现,同时还有/var目录磁盘使用情况超高。
使用du –sh *直接卡死,这说明/var/下有目录文件太多,感觉和上次的/usr/sbin/sendmail进程有关系,最后查询是/var/spool/postfix/maildrop/里堆积了大量文件,同时无法删除,但问题是该服务器上没有运行sendmail或postfix服务,为什么会有大量的sendmail进程出现?再ps aux查看除了senmail还有CRON和postdrop大量进程
CROND 1231
/usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root 1230
/usr/sbin/postdrop -r 1232
三个进程数大概相同,再查询crontab计划任务
最后找出原因是计划任务出错
* */1 * * * /usr/sbin/ntpdate time1.XX.XX 是这个计划任务有问题
time1.XX.XX 是之前的ntp server地址,后来ip变了,导致crond出错。
而crond在执行脚本时会将保持信息以邮件的形式发送给crond用户,而环境的postfix没有正常运行,导致邮件发送失败,都会堆积在/var/spool/postfix/maildrop/目录中,(可以在crontab中第一行增加MAILTO=""发送为空)
问题原因找到了,下面是操作过程:
1,更改正确的crontab
echo * */1 * * * /usr/sbin/ntpdate time2.XX.XX> /var/spool/cron/root
2,kill掉出错的进程
ps -ax | grep sendmail | awk '{print $1}' |xargs kill –9
ps -ax | grep CROND | awk '{print $1}' |xargs kill –9
ps -ax | grep postdrop | awk '{print $1}' |xargs kill –9
3,删除/var/spool/postfix/maildrop/里的文件
yum install rsync
mkdir /tmp/test
rsync --delete -a -H -v --progress --stats /tmp/test/ /var/spool/postfix/maildrop/