这两天在cacti中看到几台服务器比较异常,平常流量跑满,突然就没有了流量,TCP 连接也没了。于是登录上服务器查看,首先想重启nginx服务,结果报错,大致意思就是磁盘空间已满。通过df -h 命令查看,发现各个分区还有很充足的空间,然后df -i一看,发现/分区inode已经满了。
第一反应是/var目录下的文件导致,于是用下面脚本找出/var下各个目录文件数量,逐步定位到/var/spool/postfix/maildrop
#!/bin/sh find /var/ -maxdepth 1 -type d | while read dir; do count=$(find "$dir" -type f | wc -l) echo "$dir : $count" done
找到目标,于是首要就是先杀掉这里面的大量文件,三十多万文件。采用rsync同步清楚,效率比较快。
在其他分区创建空目录:
ps -e | grep sendmail | cut -d ' ' -f2 | xargs kill ps -e | grep postdrop| cut -d ' ' -f2 | xargs kill //杀死所有sendmail和postdrop进程后 mkdir -p /home/a.test rsync -av --delete /home/a.test/ /var/spool/postfix/maildrop/
查看其他错误日志,发现都是crond引发的sendmail.
du -sh 查看找到了一个巨大的文件/var/log/mailog。head、tail查看内容,发现全是同样的内容行,如下:
May 2 5:29:23 lcha2 postfix/postdrop[1443]: warning: mail_queue_enter: create file maildrop/383480.1443: No such file or directory
May 2 5:29:23 lcha2 postfix/postdrop[1269]: warning: mail_queue_enter: create file maildrop/330426.1269: No such file or directory
May 2 5:29:23 lcha2 postfix/postdrop[1439]: warning: mail_queue_enter: create file maildrop/357169.1439: No such file or directory
May 2 5:29:23 lcha2 postfix/postdrop[1654]: warning: mail_queue_enter: create file maildrop/984222.1654: No such file or directory
May 2 5:29:23 lcha2 postfix/postdrop[1269]: warning: mail_queue_enter: create file maildrop/330426.1269: No such file or directory
May 2 5:29:23 lcha2 postfix/postdrop[1439]: warning: mail_queue_enter: create file maildrop/357169.1439: No such file or directory
May 2 5:29:23 lcha2 postfix/postdrop[1654]: warning: mail_queue_enter: create file maildrop/984222.1654: No such file or directory
解决方法:
1.修改邮件日志输出条件
vim /etc/rsyslog.conf
找到mail.*
改成mail.err
2.在crontab中第一行增加MAILTO=""发送为空
MAILTO=""
3.crond执行的命令最后加上 &> /dev/null
本文由 Mr Gu 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Aug 26, 2016 at 09:24 pm