Pages

Friday, 31 January 2020

解决目录占用超大空间的问题

查找占用情况
$ df -h #查看磁盘占用情况
$ du -h --max-depth=1 ./ #查看当前目录的文件/目录占用大小
然后就是手动一层一层的找到最大的那个目录。
最后找到一个隐藏杀手:/var/spool/postfix/maildrop/。这个目录下面存在3000W个小文件,占用33GB。主要它还不是tmp之类的目录,没遇见过,真是很难查找。

究其原因是crontab任务日志发送到所有者的邮箱导致的问题

解决方案
方法1
编辑crontab顶部首行写上 MAILTO="",这样就会把邮箱信息赋空,也就不会发送了。

图片5030-linux查找maildrop目录超大空间占用

如果有非root用户的crontab任务也需要在顶部声明MAILTO="".
默认crontab -e是编辑的当前登录的用户定时任务配置,若是以root登录则为/var/spool/cron/root
同理www用户的定时任务文件就是/var/spool/cron/www

方法2
其次就是每条cron任务的最后把输出信息赋空 >/dev/null 2>&1

* * * * * /root/do.sh >/dev/null 2>&1

p.s.
记下以后排查的顺序:
web程序日志
nginx/apache日志
tmp
crontab 错误邮件发送日志
/var/spool/postfix/maildrop
/var/log 类型的log目录
/var/log/journal 启动目录的文件很多
...

参考:
https://www.jianshu.com/p/a0aa43707476
https://my.oschina.net/qimhkaiyuan/blog/1631028