Linux磁盘有空间,却无法写入

袁志蒙 91次浏览

摘要: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号。


随机内容

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~