摘要:df -h 发现系统盘和数据盘都是没有满的,创建文件或者创建目录下载文件都是无法执行,创建时提示:mkdir: cannot create directory ‘xxx’: No space left on device...
一、起因:
df -h 发现系统盘和数据盘都是没有满的,创建文件或者创建目录下载文件都是无法执行,创建时提示:mkdir: cannot create directory ‘xxx’: No space left on device
二、分析:
既然磁盘没有满,那在看看inodes使用情况,运行命令:df -i
果然是 inodes 100% 了,找到原因之后,查看到底哪个目录下面的文件最多,查看前30个目录最多文件即可。
find / -xdev -printf '%h\n' | sort | uniq -c | sort -nr -k 1 | head -30
发现是 /home/fzw目录下的文件最多
三、解决:
find /home/fzw -mtime +21 -name "*.*" -exec rm -Rf {} \;
解释一下这个命令:
/home/fzw :准备要进行清理的任意目录
-mtime:标准语句写法
+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
"*.*":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件
-exec:固定写法
rm -rf:强制删除文件,包括目录
{} \; :固定写法,一对大括号+空格+/+;
当然也可以根据文件名、根据大小,根据其他不同条件过滤删除,或者修改等,可以考虑sort等命令结合使用。
备注:
至于df -i,个人理解,最简单的说法,inode包含的信息:文件的字节数,拥有者id,组id,权限,改动时间,链接数,数据block的位置。相反是不表示文件大小。这就是为什么df -h和df -i 显示的结果是不一样的原因。
ps:在df -h 和df -i 显示使用率100%,基本解决方法都是删除文件。
df -h 是去删除比较大无用的文件-----------大文件占用大量的磁盘容量。
df -i 则去删除数量过多的小文件-----------过多的文件占用了大量的inode号。