缘起
最近临时需要做一些运维工作,看到一个i节点告警的信息。一路排查下去发现是/var/spool/postfix/maildrop下的inode很大,查看了下文件数量
查询资料了解到:
由于 Linux 在执行 cron 时,会将 cron 执行脚本中的 output 和 warning 信息,都会以邮件
的形式发送 cron 所有者, 而由于客户环境中的 sendmail 和 postfix 没有正常运行,导致邮件发送不成功,全部小文件堆积在了 maildrop 目录下面,而且没有自动清理转换的机制,所以长达一年的时间,此目录已堆积了大量的文件。查看 man cron 的信息,可以知道会发送给 cron owner.
处理方式
临时解决
这类数据一般没有什么价值,直接删除就好了。不过文件数量太多直接使用"rm -f *"不行。
那就写个for循环删除:
for c in `ls`; do rm -f $c; done
或者
ls |xargs rm -f
彻底解决
1. crontab中执行的任务的输出需要定向到指定文件,对于不关心的输出输出到/dev/null.
2. 增加定时清理文件夹的操作。
*/10 * * * * /root/clean_maildrop.sh >/dev/null 2>&1