При администрировании систем Linux я часто испытываю трудности с поиском виновника после заполнения раздела. Я обычно использую, du / | sort -nr
но на большой файловой системе это занимает много времени, прежде чем возвращаются какие-либо результаты.
Кроме того, это обычно успешно выдвигает на первый план самого худшего преступника, но я часто прибегал к помощи du
без sort
более тонких случаев, а затем приходилось перелистывать результаты.
Я бы предпочел решение для командной строки, которое основано на стандартных командах Linux, поскольку мне приходится администрировать довольно много систем, и установка нового программного обеспечения - это сложная задача (особенно когда не хватает места на диске!)
command-line
partition
disk-usage
command
Стивен Китт
источник
источник
Ответы:
Попробуйте
ncdu
отличный анализатор использования дисков в командной строке:источник
sudo apt install ncdu
на Ubuntu получает это легко. Это здоровоncdu -x
только для подсчета файлов и каталогов в той же файловой системе, что и сканируемый каталог.sudo ncdu -rx /
должен давать чистое чтение ТОЛЬКО самых больших каталогов / файлов ТОЛЬКО на корневом диске. (-r
= только для чтения,-x
= оставаться в той же файловой системе (то есть: не проходить через другие монтирования файловой системы))Не иди прямо к
du /
. Используйте,df
чтобы найти раздел, который причиняет вам боль, а затем попробуйтеdu
команды.Я люблю пробовать
потому что он печатает размеры в «удобочитаемой форме». Если у вас нет действительно маленьких разделов, поиск каталогов в гигабайтах - довольно хороший фильтр для того, что вы хотите. Это займет у вас некоторое время, но если у вас не установлены квоты, я думаю, что так оно и будет.
Как отмечает @jchavannes в комментариях, выражение может стать более точным, если вы обнаружите слишком много ложных срабатываний. Я включил предложение, которое делает его лучше, но все еще есть ложные срабатывания, поэтому есть только компромиссы (более простой expr, худшие результаты; более сложный и более длинный expr, лучшие результаты). Если в вашем выводе слишком много маленьких каталогов, измените свое регулярное выражение соответствующим образом. Например,
является еще более точным (каталоги <1 ГБ не будут перечислены).
Если вы делаете квоты, вы можете использовать
чтобы найти пользователей, которые загружают диск.
источник
grep '[0-9]G'
содержал много ложных срабатываний и также пропускал любые десятичные дроби. Это работало лучше для меня:sudo du -h / | grep -P '^[0-9\.]+G'
[GT]
вместо простоG
du -h | sort -hr | head
Для первого взгляда используйте «сводный» вид
du
:Эффект состоит в том, чтобы напечатать размер каждого из его аргументов, то есть каждой корневой папки в случае выше.
Кроме того, как GNU, так
du
и BSDdu
могут быть ограничены по глубине ( но POSIXdu
не может! ):GNU (Linux,…):
BSD (macOS,…):
Это ограничит выходной дисплей до глубины 3. Вычисленный и отображаемый размер по-прежнему является суммой полной глубины, конечно. Но, несмотря на это, ограничение глубины отображения резко ускоряет вычисления.
Другой полезный вариант
-h
(слова как на GNU, так и на BSD, но, опять же, не только на POSIXdu
) для «читабельного» вывода (то есть с использованием KiB, MiB и т . Д. ).источник
du
жалуется-d
попробуйте--max-depth 5
вместо.du -hcd 1 /directory
. -h для человека, c для общего и d для глубины.du -hd 1 <folder to inspect> | sort -hr | head
du --max-depth 5 -h /* 2>&1 | grep '[0-9\.]\+G' | sort -hr | head
для фильтрации ВВы также можете запустить следующую команду, используя
du
:-s
Вариант обобщает и отображает общее количество для каждого аргумента.h
печатает Mio, Gio и т. д.x
= оставаться в одной файловой системе (очень полезно).P
= не переходите по символическим ссылкам (что может привести к тому, что файлы будут подсчитаны дважды, например).Будьте осторожны,
/root
каталог не будет отображаться, вы должны запустить,~# du -Pshx /root 2>/dev/null
чтобы получить это (однажды я много боролся, не указывая, что мой/root
каталог переполнен).Изменить: исправлена опция -P
источник
du -Pshx .* * 2>/dev/null
+ скрытые / системные каталогиПоиск самых больших файлов в файловой системе всегда займет много времени. По определению вы должны пройти всю файловую систему в поисках больших файлов. Вероятно, единственное решение - запустить задачу cron на всех ваших системах, чтобы подготовить файл заранее.
Еще одна вещь, опция x для du полезна, чтобы не использовать du для следующих точек монтирования в другие файловые системы. То есть:
Полная команда, которую я обычно запускаю:
Эти
-m
средства возвращают результаты в мегабайтах, иsort -rn
будет сортировать результаты наибольшее число первых. Затем вы можете открыть файл use.txt в редакторе, и самые большие папки (начиная с /) будут вверху.источник
-x
флаг!ncdu
- по крайней мере, быстрееdu
илиfind
(в зависимости от глубины и аргументов) ..sudo du -xm / | sort -rn > ~/usage.txt
Я всегда использую
du -sm * | sort -n
, что дает вам отсортированный список того, сколько из подкаталогов текущего рабочего каталога используется в мегабайтах.Вы также можете попробовать Konqueror с режимом «просмотра размера», который аналогичен тому, что делает WinDirStat в Windows: он дает вам визуальное представление о том, какие файлы / каталоги занимают большую часть вашего пространства.
Обновление: в более поздних версиях вы также можете использовать,
du -sh * | sort -h
которые будут показывать удобочитаемые размеры файлов и сортировать по ним. (цифры будут добавлены с K, M, G, ...)Для тех, кто ищет альтернативу представлению размера файла Konqueror в KDE3, можно взглянуть на подсветку, хотя это не так хорошо.
источник
Я использую это для топ-25 худших преступников ниже текущего каталога
источник
-h
, это, вероятно, изменит эффектsort -nr
команды - то есть сортировка больше не будет работать, а затемhead
команда также больше не будет работатьВ предыдущей компании у нас была работа cron, которая выполнялась в одночасье и определяла любые файлы определенного размера, например
найти / -size + 10000k
Возможно, вы захотите быть более разборчивыми в каталогах, которые вы ищете, и следить за любыми удаленно подключенными дисками, которые могут отключиться.
источник
-x
опцию find, чтобы убедиться, что вы не нашли файлы на других устройствах, кроме начальной точки вашей команды find. Это устраняет проблему с удаленно смонтированными дисками.Одним из вариантов будет запуск команды du / sort в качестве задания cron и вывод в файл, так что он уже там, когда вам это нужно.
источник
Для командной строки я думаю, что метод du / sort является лучшим. Если вы не на сервере, вам стоит взглянуть на Baobab - Анализатор использования дисков . Эта программа также требует времени для запуска, но вы можете легко найти подкаталог в глубине, где находятся все старые Linux-ISO.
источник
я использую
и я меняю максимальную глубину в соответствии со своими потребностями. Параметр «c» печатает итоги для папок, а параметр «h» печатает размеры в K, M или G в зависимости от ситуации. Как уже говорили другие, он по-прежнему сканирует все каталоги, но ограничивает вывод таким образом, чтобы мне было легче находить большие каталоги.
источник
Я собираюсь на секунду
xdiskusage
. Но я добавлю в примечание, что на самом деле это интерфейс пользователя, который может читать вывод ду из файла. Таким образом, вы можете запуститьdu -ax /home > ~/home-du
на своем сервере,scp
файл обратно, а затем проанализировать его графически. Или пропусти через ssh.источник
Попробуйте передать вывод du в простой скрипт awk, который проверяет, больше ли размер каталога, чем какой-либо порог, если он печатает его. Вам не нужно ждать, пока все дерево будет пройдено, прежде чем вы начнете получать информацию (в отличие от многих других ответов).
Например, ниже показаны все каталоги, которые занимают более 500 МБ.
Чтобы сделать вышеперечисленное немного более пригодным для повторного использования, вы можете определить функцию в вашем .bashrc (или вы можете превратить ее в отдельный скрипт).
Так что
dubig 200 ~/
ищет в домашнем каталоге (без следующих символических ссылок на устройстве) каталоги, которые используют более 200 МБ.источник
du -k
это сделает абсолютно уверенным, что du использует блоки KBdu -kx $2 | awk '$1>'$(($1*1024))
(если вы указываете только условие или шаблон для awk, действие по умолчанию будетprint $0
)du -kx / | awk '$1 > 500000'
du -kx / | tee /tmp/du.log | awk '$1 > 500000'
. Это очень полезно, потому что если ваша первая фильтрация оказывается бесплодной, вы можете попробовать другие значения, подобные этой,awk '$1 > 200000' /tmp/du.log
или проверить весь вывод, как этот,sort -nr /tmp/du.log|less
без повторного сканирования всей файловой системыМне нравится старый добрый xdiskusage как графическая альтернатива du (1).
источник
Я предпочитаю использовать следующее, чтобы получить обзор и углубиться в результаты ...
Это отобразит результаты с удобочитаемым выводом, таким как ГБ, МБ. Это также предотвратит обход через удаленные файловые системы.
-s
Вариант только показывает резюме каждой папки найденной таким образом Вы можете перейти дальше , если заинтересованы в более подробной информации о папке. Имейте в виду, что это решение будет показывать только папки, поэтому вы можете пропустить / после звездочки, если вы тоже хотите файлы.источник
Здесь не упоминается, но вы также должны проверить lsof в случае удаленных / зависших файлов. У меня был 5,9 ГБ удаленный файл tmp из убегающего cronjob.
https://serverfault.com/questions/207100/how-can-i-find-phantom-storage-usage Помогли мне найти владельца процесса указанного файла (cron), а затем я смог перейти к
/proc/{cron id}/fd/{file handle #}
уменьшению файла в вопрос, чтобы получить начало разбега, разрешите это, а затем откройте файл "">, чтобы освободить место и позволить cron грациозно закрыть себя.источник
Из терминала вы можете получить визуальное представление об использовании диска с dutree.
Это очень быстро и легко, потому что это реализовано в Rust
Посмотреть все детали использования на сайте
источник
Для командной строки du (и его параметры) кажется наилучшим способом. DiskHog, похоже, также использует информацию du / df из задания cron, поэтому предложение Питера, вероятно, является лучшей комбинацией простого и эффективного.
( FileLight и KDirStat идеально подходят для графического интерфейса.)
источник
Вы можете использовать стандартные инструменты, такие как
find
иsort
для анализа использования дискового пространства.Список каталогов отсортирован по размеру:
Список файлов, отсортированных по размеру:
источник
Возможно, стоит отметить, что
mc
(Midnight Commander, классический файловый менеджер в текстовом режиме) по умолчанию показывает только размер инодов каталогов (обычно4096
), но с помощью CtrlSpaceили с помощью меню Инструменты вы можете видеть пространство, занимаемое выбранным каталогом, в удобочитаемом для человека виде. формат (например, некоторые как103151M
).Например, на рисунке ниже показан полный размер ванильных дистрибутивов TeX Live на 2018 и 2017 годы, в то время как версии 2015 и 2016 года показывают только размер inode (но в действительности они имеют почти 5 Гбайт каждый).
То есть, это CtrlSpaceдолжно быть сделано один за одним, только для фактического уровня каталога, но это так быстро и удобно, когда вы перемещаетесь с этим,
mc
что, возможно, вам не понадобитсяncdu
(что действительно, только для этой цели лучше). В противном случае вы также можете запуститьncdu
изmc
. без выходаmc
или запуска другого терминала.источник
Сначала я проверяю размер каталогов, вот так:
источник
Если вы знаете, что большие файлы были добавлены в последние несколько дней (скажем, 3), то вы можете использовать команду find в сочетании с "
ls -ltra
", чтобы обнаружить эти недавно добавленные файлы:Это даст вам только файлы ("
-type f
"), а не каталоги; только файлы со временем модификации за последние 3 дня ("-mtime -3
") и выполнение "ls -lart
" для каждого найденного файла ("-exec
" часть).источник
Чтобы понять непропорциональное использование дискового пространства, часто полезно начать с корневого каталога и пройтись по некоторым из его самых больших дочерних элементов.
Мы можем сделать это
Это:
теперь скажем / usr слишком большой
теперь, если / usr / local подозрительно велик
и так далее...
источник
Я использовал эту команду, чтобы найти файлы размером более 100 МБ:
источник
Мне удалось отследить худшего преступника (ей), передающего
du
результаты в удобочитаемой формеegrep
и соответствующие регулярному выражению.Например:
что должно вернуть вам все 500 мег или выше.
источник
du -k | awk '$1 > 500000'
. Гораздо проще понять, отредактировать и исправить с первой попытки.Если вам нужна скорость, вы можете включить квоты в файловых системах, которые вы хотите отслеживать (вам не нужно устанавливать квоты для какого-либо пользователя), и использовать сценарий, который использует команду quota для отображения дискового пространства, используемого каждым пользователем. Например:
даст вам использование диска в блоках для конкретного пользователя в конкретной файловой системе. Таким образом, вы сможете проверить использование за несколько секунд.
Чтобы включить квоты, вам нужно добавить usrquota в опции файловой системы в вашем файле / etc / fstab, а затем, вероятно, перезагрузиться, чтобы quotacheck можно было запустить в незанятой файловой системе перед вызовом quotaon.
источник
Вот крошечное приложение, которое использует глубокую выборку, чтобы найти опухоли на любом диске или в каталоге. Он дважды проходит по дереву каталогов, один раз для его измерения, и второй раз, чтобы распечатать пути до 20 «случайных» байтов в каталоге.
Вывод выглядит так для моей папки Program Files:
Это говорит мне, что каталог 7,9 ГБ, из которых
Достаточно просто спросить, можно ли выгрузить какой-либо из них.
Он также рассказывает о типах файлов, которые распределены по файловой системе, но вместе взятые предоставляют возможность для экономии места:
Он также показывает множество других вещей, без которых я, вероятно, мог бы обойтись, таких как «SmartDevices» и поддержка «ce» (~ 15%).
Это занимает линейное время, но это не нужно делать часто.
Примеры вещей, которые он нашел:
источник
У меня была похожая проблема, но ответов на этой странице было недостаточно. Я нашел следующую команду наиболее полезной для листинга:
du -a / | sort -n -r | head -n 20
Который покажет мне 20 крупнейших преступников. Однако, несмотря на то, что я запустил это, это не показало мне реальной проблемы, потому что я уже удалил файл. Загвоздка была в том, что все еще работал процесс, который ссылался на удаленный файл журнала ... поэтому мне пришлось сначала убить этот процесс, а затем место на диске оказалось свободным.
источник
Вы можете использовать DiskReport.net для создания онлайн-отчета по всем вашим дискам.
С помощью многих прогонов он покажет вам график истории для всех ваших папок, легко найти то, что выросло
источник
Есть хороший кроссплатформенный бесплатный инструмент под названием JDiskReport которая включает в себя графический интерфейс для изучения того, что занимает все это пространство.
Пример скриншота:
Конечно, вам нужно будет очистить немного места вручную, прежде чем вы сможете загрузить и установить его или загрузить его на другой диск (например, USB-накопитель).
(Скопировано здесь из того же авторского ответа на дубликат вопроса)
источник