linux下空间满可能有两种情况
可以通过命令
df -h 查看磁盘空间占用,实际上是查看磁盘块占用的文件(block)
df -ih 查看索引节点的占用(Inodes)
一、面对磁盘满了,通过下列命令找出没有用的大文件删除,接口
磁盘块和索引节点其中之一满,都会导致无法创建文件,提示磁盘空间已满。
所以请注意,查看磁盘还有空间,但是创建文件提示空间满,可能是inodes节点已满
1.通过命令:du -hs * | sort -h
查看当前目录内文件夹的大小cd /www目录
2.通过命令:find / -size +100M |xargs ls -lh
列出系统内大于100M的文件
可以两种方式都测试下,有些时候,占用了大量空间的其实是系统日志或业务附件等小文件,
二、索引节点Inodes满了,解决办法
1.进入/根目录然后执行
find */ ! -type l | cut -d / -f 1 | uniq -c
2.然后一层一层找出文件最多目录,定位出哪个目录占用inodes最多(通常inodes是因为小文件太多)
3.[root@localhost clientmqueue]# rm -rf * 删除所有文件,发现提示-bash: /bin/rm: Argument list too long,文件太多了,服务器都懒得执行删除
4.用命令ls | xargs rm -f 过了一段时间终于删除了所有文件
5.df -ih 可以看到Inodes终于回来了很多空间
6.如果你删除文件最多的目录是/var/spool/clientmqueue,那么说明你使用了计划任务,而且按秒执行
备注:为什么var/spool/clientmqueue会产生大量的文件呢,查资料是因为cron执行时会将相关结果以mail方式发送到执行用户的帐号,可是当sendmail 沒有启动 那么所有信件就会暂存在这个目录中,此时就会出现这种情况。
7.修改cronwtab文件 crontab -e (修改计划任务,最好刷新一下计划任务或者等几分钟,使其生效)
01 * * * * root run-parts /etc/cron.hourly > /dev/null 2>&1
02 4 * * * root run-parts /etc/cron.daily > /dev/null 2>&1
02 4 * * * root run-parts /etc/cron.daily > /dev/null 2>&1
8.修改计划任务这样就不会产生记录了,完美结局Inodes空间满的问题!