df -i 100% 处理:
[root@iZ251u7jin4Z logs]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 20G 14G 5.0G 74% /
tmpfs tmpfs 499M 0 499M 0% /dev/shm
[root@iZ251u7jin4Z /]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 1310720 1310719 1 100% /
tmpfs 127534 1 127533 1% /dev/shm
现象分析:
for i in /*; do echo $i; find $i | wc -l; done
for i in /var/*; do echo $i; find $i | wc -l; done
for i in /var/spool/*; do echo $i; find $i | wc -l; done
for i in /var/spool/postfix/*; do echo $i; find $i | wc -l; done
for i in /var/spool/postfix/maildrop/*; do echo $i; find $i | wc -l; done
故障分析:
排错发现是因为目录/var/spool/postfix/mailfdrop 过大导致。
由于 Linux 在执行 cron 时,会将 cron 执行脚本中的 output 和 warning 信息,都会以邮件
的形式发送 cron 所有者, 而由于客户环境中的 sendmail 和 postfix 没有正常运行,导致邮件
发送不成功,全部小文件堆积在了 maildrop 目录下面,而且没有自动清理转换的机制,所以长达一
年的时间,此目录已堆积了大量的文件。
故障解决:
cd /var/spool/postfix/maildrop
rm -rf *
修改/etc/crontab:
把MAILTO=root改成MAILTO=""。
修改计划任务,在开头添加:
MAILTO=""
修改计划任务,在后面添加:
>/dev/null 2>&1
[root@iZ251u7jin4Z maildrop]# crontab -e
MAILTO=""
*/1 * * * * /bin/bash /data0/mysql/3306/monitormysqlprocess.sh >/dev/null 2>&1
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh >/dev/null 2>&1
故障总结:
临时删除/var/spool/postfix/maildrop文件目录的文件,以后也还会出现。所以我了们需要从源头杜绝这个问题再次出现。
通过上面的介绍我们知道是因为crontab执行定时任务的时候把脚本的一些输出发送给脚本执行者。如果是我们不关心的备注型等输出我们完全可以让其输出到 /dev/null 这样就不会因为发送失败到导致在/var/spool/postfix/maildrop下面产出什么文件。
本文暂时没有评论,来添加一个吧(●'◡'●)