私は次の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 \)