摘要
一台运维主机上面没有跑什么特殊服务,所以没有添加监控告警。今突然执行命令执行不了发现是因为磁盘慢了导致。排错发现是因为目录
/var/spool/postfix/mailfdrop
过大导致。
通过了解发现因为:
由于 Linux 在执行 cron 时,会将 cron 执行脚本中的 output 和 warning 信息,都会以邮件
的形式发送 cron 所有者, 而由于客户环境中的 sendmail 和 postfix 没有正常运行,导致邮件
发送不成功,全部小文件堆积在了 maildrop 目录下面,而且没有自动清理转换的机制,所以长达一
年的时间,此目录已堆积了大量的文件。查看 man cron 的信息,可以知道会发送给 cron owner.
解决之道
临时解决当然是清空该文件夹即可
cd /var/spool/postfix/maildrop
rm -rf *
但是临时删除了,以后也还会出现。所以我们需要从源头杜绝这个问题再次出现。
通过上面的介绍我们知道是因为crontab执行定时任务的时候把脚本的一些输出发送给脚本执行者。如果是我们不关心的备注型等输出我们完全可以让其输出到 /dev/null
这样就不会因为发送失败到导致在/var/spool/postfix/maildrop
下面产出什么文件。
建议:
*/10 * * * * /tmp/test.sh >/dev/null 2>&1
修改之后观察该目录发现没有新的文件产生。