今天服务器无法操作,查看磁盘信息,内存信息,cpu信息都是满的,重启后,都说磁盘满了,无法写device,用命令
df -i
查看inodes信息,发现inodes已用尽。
df -h
磁盘空间没有满
使用命令可以查看各个文件夹的大小排序:
进入对应文件夹进行查询,排序前12条,查询大文件夹
du -hm --max-depth=2 | sort -nr | head -12
查询一个大文件
find . -type f -size +800M -print0 | xargs -0 du -h
发现/var/spool/postfix/maildrop 小文件太多
解决:
1、vi /etc/crontab;将MAILTO=root修改为MAILTO=”“,保存。
2、/etc/init.d/crond restart
删除:
1、find /var/spool/postfix/maildrop/ -type f |xargs rm -rf
确定应该是inodes满了引起的
上面maildrop文件清空之后,发现问题解决了,怀疑是计划任务的mail文件太多引起的,修改计划任务的设置,在crontab末尾加上
>/dev/null 2>&1.
或者
&> /dev/null
例如
0 1 5 10 * /path/to/script.sh >/dev/null 2>&1
0 1 5 10 * /path/to/script.sh &> /dev/null
另外一种方法是编辑crontab
crontab -e
在第一行加入
MAILTO=””
保存退出
这样做的好处是,可以避免 /var/mail/root 体积快速增长
同时,如果还是没有处理好,inodes的占用还是太大,可以执行以下命令
解决方法:删除无用的临时文件,释放inode。
查找发现 /tmp 目录下有很多sess_xxxxx的 session临时文件。
ls -lt /tmp | wc -l
4011517
进入/tmp目录,执行find -exec命令
find /tmp -type f -exec rm {} \;
如果使用rm *,有可能因为文件数量太多而出现Argument list too long错误,关于Argument list too long错误可以参考《linux Argument list too long错误解决方法》
除了/tmp的临时文件外,0字节的文件也会占用inode,应该也释放。
遍历寻找0字节的文件,并删除。
find /home -type f -size 0 -exec rm {} \;
全部完成后,再用命令查看系统信息:
df -i
基本问题能解决了。