记录一次服务器磁盘容量不足的清理过程

遇到了两个问题

  • /var/spool/postfix/maildrop 产生大量文件
  • 目录中文件过多导致ls命令卡住

前因

收到服务器报警邮件,磁盘使用率超过百分之97,遂上线检查清理

检查目录占用情况

笨办法,du -sh * 查看目录/文件大小,发现卡在var目录下,进入目录继续测试,发现最终卡在/var/spool/postfix/maildrop 下,进入目录,ls 发现ls卡死,需要kil 才能恢复,ls -l |wc -l 同样结果,遂开始研究问题。

问题1. /var/spool/postfix/maildrop 产生大量文件

crontab 每次执行任务后会发送邮件,接受者是在他的配置文件 “/etc/crontab” 通过 MAILTO=root’ 来设置的,默认是root。发送后的邮件就到/var/spool/postfix/maildrop下了。

如果需要邮件发送到指定邮箱,则需要配置此处。

继续检查发现发现服务器上有很多crontab任务,因而判断发送太多邮件到maildrop下导致文件超多。

解决方案

方案1

修改“/etc/crontab”
将‘MAILTO=root’替换成‘MAILTO=""’修改之后没有成功,需要重启crond服务才可以
也可从在crontab(crontab -e)中最前面直接加入MAILTO=""

方案2

如果是我们不关心的备注型等输出我们完全可以让其输出到 /dev/null 这样就不会因为发送失败到导致在/var/spool/postfix/maildrop下面产出什么文件。
如果需要收集输出log,可在crontab job后增加>定向输出
例如:

# 输出空
*/10 * * * * /tmp/test.sh >/dev/null 2>&1
# 定向输出到文件
*/10 * * * * /tmp/test.sh >/log/test.log 2>&1

结果

使用方案1后重启crond服务,则不会产生新的文件。

问题2. 目录中文件过多导致ls命令卡住

解决方案

如果需要立马显示文件内容,则使用

ls -1 -f 
# 删除文件
ls -1 -f | xargs rm

即可立马显示文件。

问题原因

(https://www.jianshu.com/p/353a5dbcd423)[https://www.jianshu.com/p/353a5dbcd423]