inode 使用情况与计数不匹配

inode 使用情况与计数不匹配

我有这个索引节点用法:

host:~ # df -i
Filesystem                             Inodes  IUsed   IFree IUse% Mounted on
/dev/hda1                              655360 655357       3  100% /

但是,如果我运行这个命令:

for i in `find . -xdev -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n

我有这个输出:

host:/ # find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
      3 srv
     17 root
     25 bin
     83 sbin
    133 lib64
    184 opt
    985 boot
   2109 etc
   4487 lib
  50489 usr

但它们的总和根本不匹配。我不知道索引节点用在哪里。

答案1

因为您的脚本只查找文件 ( -type f)。

目录和符号链接有自己的索引节点,但您的搜索请求找不到它。

更正您的命令以获得如下内容:

find / -xdev \( -type f -o -type d -o -type l \) | cut -d "/" -f 2 | sort | uniq -c | sort -n

并且你会得到不同的输出。


一些忠告:不要使用这样的命令来排除索引节点问题。在大多数情况下,您会遇到消耗所有索引节点的小日志文件的问题,而您的基本问题是找到该文件。

为此,您可以使用命令-mtime选项find

find / -xdev -mtime -1 -printf '%h\n' -type f | sort | uniq -c | sort -k 1 -n

此命令返回包含文件数量的目录。

你可以-type f\( -type f -o -type d -o -type l \)上面提到的替换。

相关内容