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 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.