LINUX.ORG.RU
Форум — Admin  

Есть ли аналог du, но для количества занятых inode?

 , ,


4

1

Доброго времени суток

Сабж. Крайне редко, но приходится искать, где накопилось куча файлов, которые заняли почти все свободные inode'ы.

Если бы просто был забит диск, я бы искал через

du -smxc * | sort -nr | less

Но как быть с инодами? Есть ли утилита, которая покажет количество файлов в данном каталоге, включая подкаталоги?

Пока обхожусь таким костылём:

find ./ -type d -exec bash -c 'a={}; echo $(ls -1f "$a" | wc -l ) "$a";' \; | tee /tmp/list 
sort -nr /tmp/list | less

update: в новых версиях du добавили ключ --inodes

★★★★★

Последнее исправление: router (всего исправлений: 2)

Есть ли утилита, которая покажет количество файлов в данном каталоге, включая подкаталоги?

Может я чего не понял, но разве

find ./ -type f | wc -l
не оно?

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

А, тебе именно список с кол-вом файлов нужен, тогда да, нужен костыль, пуркуа бы не па собсно. Unix-way :)

blind_oracle ★★★★★
()
Ответ на: комментарий от sin_a

Это они с df --inodes перепутали. И да, количество свободных инодов имеет смысл только для fs, но никак не для каталога.

eagleivg ★★★★★
()
Последнее исправление: eagleivg (всего исправлений: 1)
Ответ на: комментарий от eagleivg

количество свободных инодов имеет смысл только для fs, но никак не для каталога.

А искать кто все иноды съел тоже не нужно?

router ★★★★★
() автор топика
Ответ на: комментарий от blind_oracle
find ./ -type f | wc -l

не оно?

На большом количестве файлов find будет очень сильно тормозить - он сначала готовит список в памяти. Только ls -1f и спасает

router ★★★★★
() автор топика
Ответ на: комментарий от sin_a
du --inodes /boot
2	/boot/grub/fonts
265	/boot/grub/i386-pc
32	/boot/grub/locale
32	/boot/grub/themes/starfield
33	/boot/grub/themes
338	/boot/grub
1	/boot/images
2	/boot/syslinux
349	/boot
                                                                                                         
du --version
du (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Torbjörn Granlund, David MacKenzie, Paul Eggert,
and Jim Meyering.
MadMax ★
()

Я себе для поиска жирных файлов и просто построения гистограммы по размерам файлов в текущей директории сделал простенький велосипед. Можно туда добавить еще и запрос статистики по inode.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от router

Нужно. Но ЕМНИП, для ext2/3/4 количество занятых инодов к каталогу никак не привязывается, про другие ФС не скажу. И поиск каталогов с большим числом файлов - совсем другая задача.

eagleivg ★★★★★
()
Ответ на: комментарий от MadMax

Прикольно, жаль у меня в 8.13 такого нет. ТС-у срочно обновить coreutils.

eagleivg ★★★★★
()
Ответ на: комментарий от router

На большом количестве файлов find будет очень сильно тормозить - он сначала готовит список в памяти

Это ты что-то придумал, не готовит он ничего в памяти, а сразу гонит в stdout. Проверил find ./ на своем /usr/src, где файлов, наверное, несколько миллионов - find кушал 1мб памяти.

blind_oracle ★★★★★
()
Ответ на: комментарий от MadMax
# du --inodes /
du: unrecognized option '--inodes'
# du --version
du (GNU coreutils) 8.4

Но в общем понятно, что утилита есть. Когда прилетит обновление, костыли будут не нужны

router ★★★★★
() автор топика
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от blind_oracle

Это ты что-то придумал, не готовит он ничего в памяти, а сразу гонит в stdout. Проверил find ./ на своем /usr/src, где файлов, наверное, несколько миллионов - find кушал 1мб памяти.

В следующий раз проверю. Сегодня вспомнил http://habrahabr.ru/post/157613/ и вывод списка файлов через find сходу отбросил.

router ★★★★★
() автор топика

Пока обхожусь таким костылём:

Вполне юникс-вейно, что не нравится-то?

anonymous
()
Ответ на: комментарий от Eddy_Em

Япона мать! Оно у меня 2⁶⁴ байт оперативки отжирает (виртуально). Надо будет бажок подправить, сделать кластеризацию по размерам, чтобы промежуточный размер гистограммы хотя бы в 1МБ влезал.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от KRoN73

Дык, виртуально же ☺

Просто, я, прочитав свой старый велосипед, понял, что если шерстить по очень большой директории, оно реально может всю оперативу отожрать!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от sin_a

И? Мой велосипед лучше. Он, по крайней мере, полторы страницы исходников занимает и консольный. А это — ...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Deleted

madrouter , гугломыло.

Но у меня есть вредная привычка не запускать софт, о котором не знает опеннет. А читать код ещё одного проекта сейчас нет времени :\

router ★★★★★
() автор топика
Ответ на: комментарий от Eddy_Em

Просто, я, прочитав свой старый велосипед, понял, что если шерстить по очень большой директории, оно реально может всю оперативу отожрать!

У меня как-то целое микроисследование народ проводил :) — http://www.balancer.ru/g/p3253249

KRoN73 ★★★★★
()
20 мая 2014 г.
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.