📑 文章章节大纲 (点击平滑直达)
一、问题背景
在日常运维排查中,常发现 /var/spool/postfix/maildrop 目录下堆积了数以万计的小文件,耗尽磁盘 inode 或导致空间预警。
原因解析:
Linux 执行 cron 定时任务时,默认会将脚本的输出(stdout)及告警(stderr)以邮件形式发送给任务属主。若服务器未配置或关闭了 postfix/sendmail 邮件服务,投递失败的邮件就会全部滞留在 maildrop 目录中。
二、根治配置方案
方案 1:全局禁用 Cron 邮件投递
编辑 /etc/crontab:
sudo vim /etc/crontab
将默认的:
MAILTO=root
修改为关闭投递:
MAILTO=""
保存后重启 cron 守护进程:
sudo systemctl restart crond
方案 2:在用户任务列表头部声明
在用户 crontab(crontab -e)的最顶行加入:
MAILTO=""
三、清理历史堆积小文件
由于堆积小文件数量过多时,直接执行 rm -rf * 会报 Argument list too long(参数列表过长),推荐使用以下方式安全清空:
cd /var/spool/postfix/maildrop
ls | xargs -n 1000 rm -f