почему команда unix du (1) не поддерживает -i для измерения inode?

2905
nick black

Это просто потому, что переход от имен файлов к номерам инодов труден в пространстве пользователя, и вы не можете читать иноды оттуда?

7
Я думаю, что ответ двоякий. В общем случае он недоступен, поскольку, как предполагается, обычный пользователь не может произвольно читать inode. Он не доступен как инструмент, требующий root-доступа, потому что нет простого и надежного способа перехода от имен файлов к номерам узлов за пределами ядра. 12 лет назад 0
Лучше на unix.stackexchange.com Chris J 12 лет назад 0

3 ответа на вопрос

6
Berny

Реализация du (1) в GNU coreutils будет поддерживать опцию --inodes со следующим выпуском (> 8.21) ... Я только что установил патч для Git ( http://git.sv.gnu.org/). cgit / coreutils.git / commit /? id = 333dc83d ). См. Http://lists.gnu.org/archive/html/coreutils/2013-07/msg00087.html.

Это должно быть `> 8.21` или` ≥ 8.21`? gerrit 5 лет назад 0
2
fge

Используйте df, нет du!

duрасшифровывается как «использование диска». Это dfозначает «диск свободен» и будет проверять правильность файловой системы. Включая использование инода с -iопцией!

В противном случае просто сделайте:

find thedirectory -exec ls -di {} \;|awk ''|sort|uniq|wc -c

или похожие

Нет, я хочу получить иерархическую сводку об использовании inode для данного корня. Я знаю, о каком инструменте я говорю. 12 лет назад 0
но почему, почему вы думаете, что он хочет измерить использование дискового пространства файловой системы? Oleg Mikheev 12 лет назад 0
`find | wc -l`, затем ... Конечно, вам нужно учитывать файлы с несколькими ссылками. Но твой вопрос не имеет никакого смысла. 12 лет назад 0
@ Олег, я вообще этого не говорил. У `df` есть опция` -i`. 12 лет назад 0
2
Ronny Cook

Это не даст точного ответа - в частности, оно приравнивает записи каталога к файлам и, таким образом, дважды учитывает жесткие ссылки, а также имеет проблемы с переводами строк в именах файлов / каталогов - но, вероятно, «достаточно хорошо» для большинства целей:

find /data | awk -F/ '}' | sort | uniq -c | sort -n 

Это сортирует по количеству инодов (sic). если вы хотите традиционный порядок сортировки по каталогу:

find /data | awk -F/ '}' | sort | uniq -c | sort -k2 

Чаще всего я хочу что-то подобное, когда на диске заканчиваются inode, и я хочу знать, где они используются. Для этой цели некоторые незначительные неточности обычно не имеют большого значения.

Должна быть возможность использовать «find -ls» и анализировать номера инодов в листинге, чтобы исключить дубликаты, если вы хотите что-то более точное.

Похожие вопросы