今天使用svn up在服务器更新文件的时候提示No space left on device,以为是磁盘空间满了,结果df -h发现80g的硬盘只是用了36g而已。然后经同事指点才意识到应该是inode满了。由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。这时,就无法在硬盘上创建新文件。在linux中使用一下命令查找文件夹下的文件数量:
for i in /var/www/longyi/; do echo $i; find $i |wc -l|sort -nr; done
经过一番搜索发现是项目目录下的缓存session写满了,在session下使用du -sh显示20G占用空间。然后使用df -i显示inode已经100%,于是就考虑将七天之前的session进行删除。具体命令如下:
删除七天前的文件:find /var/www/longyi/var/session -ctime +7 -type f | xargs rm -rf
删除当前文件夹下的所有文件:find . -name "*" | xargs rm -rf
删除某一文件夹下的所有文件:find /var/spool/exim/input/ -type f -name "*" -print0 | xargs -0 rm -rf
以上命令可以写入到定时任务中,进行自动清理,防止磁盘爆满和inode用尽。实操图(此图为另一个站的,100%的inode未进行截图记录):