CoderNotes - заметки программиста

Публикации  »  Администрирование Linux
Скидка 65% на Skillbox

Получите скидку 65% на любой курс программирования на популярной образовательной платформе Skillbox!

Подробнее
Бесплатный хостинг + SSL-сертификат

Зарегистрируйте домен и получите 2 месяца бесплатного хостинга и SSL-сертификат на 1 год в подарок

Подробнее

Чем занято место на диске Linux

Ситуация, когда на разделах 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. Можно конечно найти еще множество других способов, здесь я привел самые основные и распространенные.

Книги по теме:

Денис Колисниченко

Разработка Linux-приложений

Денис Колисниченко

Серверное применение Linux

Посмотреть все книги по программированию

Комментарии к статье:

06.03.18   Гость ncdu /
22.10.19   Гость Добрый день.
Вопрос по ncdu: Почему при запуске показывается только домашний каталог пользователя? Запускается от root. Как увидеть содержимое всего диска?
22.10.19   Гость в предыдущем комментарии написано: ncdu /
22.10.19   Гость т.е. можно написать ncdu и указать путь к папке, которую нужно посчитать, например: ncdu /var/www
05.08.20   Макс Спасибо!!!
21.01.21   Гость Команда du -sm * | sort -n, я так понимаю написана не верно, должно быть du -sm * | sort -h
30.03.21   Андрей ncdu помог спасти сервер от забивания памяти mysql-slow.log'ом. Спасибо за статью!
30.03.21   Андрей Чтобы увидеть содержимое всего диска, нужно перейти в самый корень этого диска и запустить ncdu там.
12.03.23   Владимир ncdu классная вещь, лучшее, что я использовал до этого. Не знал о ней, спасибо!

Я бы к du добавил ключ -c, тогда он ещё выдаст суммарный объём данных. Также можно вместо `du -sm *` написать `du -m --max-depth=1 .` , тогда будут показаны скрытые каталоги, но не будут показаны отдельные файлы. А чтобы всё вместе, нужно мутить с ls и xargs, например, `ls -A | xargs -d"\n" du -msc | sort -n`.

И в тексте опечатка: Debian - это deb-пакеты, а RedHat - rpm.
22.09.23   Гость 2
22.09.23   Гость "><"

Добавить комментарий: