inode 使用量が数と一致しません。

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

しかし、その合計はまったく一致しません。 inodeがどこで使用されているかわかりません。

ベストアンサー1

スクリプトがファイル(-type f)のみを見つけるためです。

ディレクトリとシンボリックリンクには独自のinodeがありますが、検索要求にはありません。

次のようにコマンドを変更します。

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

そして、あなたは別の結果を得るでしょう。


いくつかのアドバイス: inode の問題を解決するために、このようなコマンドを使用しないでください。ほとんどの場合、すべてのinodeを消費する小さなログファイルに問題があり、基本的な問題はそのファイルを見つけることです。

これを行うには、コマンド-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 \)

おすすめ記事