Ситуация, когда на разделах Linux заканчивается место может быть очень часто встречаемой. На вебсерверах такая проблема возникает еще чаще, т.к. большое количество посетителей и ошибки в программах могут приводить к огромному росту лог-файлов и т.д. и появляется необходимость определить чем занято место на диске Linux, чтобы удалить ненужные данные и освободить место. Есть несколько вариантов как это сделать.
1-й способ. Утилита du - подсчет занимаемого места.
Воспользоваться встроенной утилитой du. Сделать это достаточно просто. Например, чтобы определить в текущей папке занимаемое место всеми подкаталогами и файлами, нужно использовать команду:
du -sm *
Вывод этой команды будет примерно такой:
514 folder1 893 folder2 44 file1.sh 53 file2.txt
Немного поясню использованные ключи:
s - означает, что нужно вывести суммарное занимаемое место, т.е. например, не показывать каждый файл из папки folder1 и занимаемое им место, а показать, сколько всего места занимают все файлы в папке folder1
m - означает вывод данных в Мб, можно использовать вместо него ключи b (в байтах) и k (в килобайтах)
* - означает подсчитать все объекты в текущем каталоге. Если не указать * , то будет подсчитано все занимаемое место текущего каталога. Так же, можно подсчитать сколько места занимает конкретная папка со всеми файлами и подкаталогами в ней, для чего нужно написать вместо * название нужного каталога.
Когда папок и файлов много, можно отсортировать результаты, чтобы было проще определить, какая папка или файл заняли больше всего места:
du -sm * | sort -n
Эта простая команда поможет вам выяснить, чем занято место в конкретной папке или на всем разделе Linux. Команда универсальна, проста в использовании и есть в любых дистрибутивах Linux.
2-й способ. Утилита ncdu - анализ занятого места и его освобождение
Есть так же и другие способы определить чем занято место на диске, например, очень удобная в плане анализа занятого места - утилита ncdu. Установить ее можно, например, так:
- Для Debian систем (rpm-пакеты) (в т.ч. Ubuntu) командой apt-get install ncdu
- Для Red Hat систем (dpkg-пакеты) командой yum install ncdu
Дальше просто запустите ncdu и подождите, когда она подсчитает занимаемое место. По-умолчанию программа посчитает размеры папкой текущей папки, из которой программа была запущена. Если нужно посчитать какую-то другую папку, просто добавьте к команде путь к папке, например, так: ncdu /var/www. Если нужно посчитать занимаемое место на всем диске, можно использовать ncdu /.
Программа показывает занимаемое папками место, позволяет заходить в них и сразу видеть сколько подпапки занимают места. Так же в этой утилите можно выполнять различные действия над файлами и папками. Получить справку по клавишам управления можно нажав "?". Ниже приведу список некоторых из клавиш управления:
- d — удалить выбранный файл или папку с файлами;
- n — отсортировать файлы и папки по имени;
- s — отсортировать файлы и папки по объему занимаемого места;
- t — показывать сначала папки, затем файлы;
- g — режим отображения (в процентах, графически, комплексно);
- a — режим отображения (размер файла, занятое место на жестком диске)
- e — включить/отключить отображение скрытых файлов;
- i — показать дополнительную информацию о папке или файле;
- r — заново пересчитать занимаемое место;
- q — выйти из программы;
Программа очень удобная, простая и выполняет задачу по анализу и освобождению свободного места полностью, рекомендую ее к использованию.
3-й способ. Графические утилиты.
Есть большое количество графических программ, которые позволяют делать примерно то же, что ncdu, только в графике. В Ubuntu, например, есть графическая программа, которая находится в Приложения > Системные утилиты > Анализатор использования диска. Кроме того, есть много и других программ. Приведу небольшой список, чтобы вы могли их попробовать и выбрать, какая больше нравится:
- В системах с Gnome обычно есть утилита Baobab, которая графически покажет занимаемое папками место, так же выводит диаграмму;
- Утилита KDirStat для KDE (WinDirStat для Windows) - в отличие от Baobab показывает вместо диаграммы прямоугольники, размер которых соответствует занимаемому папками пространства;
- Gd Map - аналог KDirStat для Gnome;
- Filelight и Philesight - аналоги Baobab (показывает папки в виде диаграммы).
Вот пожалуй, основной набор способов определения занятого места на дисках Linux. Можно конечно найти еще множество других способов, здесь я привел самые основные и распространенные.
Комментарии к статье:
Вопрос по ncdu: Почему при запуске показывается только домашний каталог пользователя? Запускается от root. Как увидеть содержимое всего диска?
Я бы к du добавил ключ -c, тогда он ещё выдаст суммарный объём данных. Также можно вместо `du -sm *` написать `du -m --max-depth=1 .` , тогда будут показаны скрытые каталоги, но не будут показаны отдельные файлы. А чтобы всё вместе, нужно мутить с ls и xargs, например, `ls -A | xargs -d"\n" du -msc | sort -n`.
И в тексте опечатка: Debian - это deb-пакеты, а RedHat - rpm.
Добавить комментарий: