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-disk-space-000.pngКонтроль свободного места на серверах и рабочих станциях под управлением Linux является достаточно актуальной задачей для администратора, особенно при использовании SSD, объемы которых все еще меньше, чем хотелось бы. При этом недостаточно только контролировать занятое пространство, нужно еще четко понимать, чем именно оно занято, то ли это рабочие данные и нужно действительно расширять дисковую подсистему, то ли скопившийся годами хлам, который можно безболезненно удалить.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Любая работающая система со временем обрастает всякими нужными и не особо нужными файлами, которые могут быть щедро разбросаны по файловой системе. Это могут быть установочные пакеты, архивы, какие-то временные копии, которые оставили по принципу «пусть недельку полежат на всякий случай», а также временные файлы, кеши и т.д. и т.п.

И когда встает вопрос: а собственно, чем это занято место на диске? Ответить на него бывает непросто, нужен анализ использования диска и сегодня мы рассмотрим, как это можно сделать.

Утилиты df и du

Начнем с самых основ, эти утилиты может и не радуют удобством, но они есть в любом Linux-дистрибутиве и просто делают свою работу. Начнем с df, эта утилита позволяет получить отчет о доступном и использованном пространстве на файловых системах. Использовать ее просто:

df -h

Ключ -h (—human-readable) выводит данные в удобочитаемом формате, т.е. мегабайтах и гигабайтах, также можете использовать ключ -H, он делает тоже самое, но с использованием системы СИ, т.е. в расчетах используется 1000 вместо 1024.

linux-disk-space-001.pngВыяснив нужную файловую систему и точку монтирования, перейдем к более глубокому анализу того, что занимает место на диске, для чего привлечем утилиту du, которая показывает место занимаемое файлами и папками, с ней также можно использовать ключи -h или -H, но если мы выполним следующую команду, то результат нас вряд-ли обрадует:

du -h /

Ниже показана часть такого вывода:

linux-disk-space-002.pngДело в том, что утилита пройдет рекурсивно на всю глубину и выдаст размер каждой папки и файла в указанном расположении, чтобы изменить такое поведение используйте ключ -d для явного указания глубины анализа. Например, ограничимся только директориями верхнего уровня:

du -hd 1 /

Ну вот, совсем уже другое дело. Как можем увидеть, больше всего места занимает директория /var:

linux-disk-space-003.pngТеперь проанализируем персонально ее:

du -hd 1 /var

linux-disk-space-004.pngТаким образом, шаг за шагом мы можем найти все интересующие нас расположения и изучить их содержимое, получив данные о том, чем именно занято дисковое пространство.

Утилита ncdu

Все это хорошо, но несколько долго и муторно, может быть есть способ проще? Есть, это утилита ncdu (NCurse Disk Usage), которая представляет удобный интерактивный инструмент с псевдографическим интерфейсом. Для установки в DEB-cистемах используйте команду:

apt install ncdu

Если запустить утилиту без параметров, то она проанализирует текущее расположение, поэтому мы выполним:

ncdu /

Сканирование может занять некоторое время, после чего вы увидите директории и файлы первого уровня, отсортированные по уменьшению размера. Фактически все уже сделали за нас, вывод ncdu гораздо более нагляден и информативен.

linux-disk-space-005.pngЗдесь же сразу вы можете получить дополнительную информацию, так значок @ слева обозначает что перед нами символическая ссылка, а буква e (empty) — указывает на пустую директорию. Как мы уже говорили, система интерактивна, для навигации следует использовать стрелки, а для перехода с уровня на уровень — Enter. Но это еще не все, вы можете сразу отсюда удалять файлы простым нажатием на d, но при этом вам придется явно подтвердить удаление, что исключает случайные срабатывания.

linux-disk-space-006.pngДля быстрого знакомства со всеми возможностями утилиты всегда можно вызвать встроенную справку, нажав ?. Все это указано прямо в шапке утилиты.

linux-disk-space-007.pngНа наш взгляд, данная утилита заслуживает того, чтобы стать частью джентельменского набора любого администратора, на своих серверах мы устанавливаем ее по умолчанию. Кстати, если вы работаете с WSL (Windows Subsystem for Linux), то можете с помощью ncdu выполнять анализ файловых систем Windows.

Инструменты графической оболочки

При работе в графической оболочке вы, конечно, можете использовать привычные консольные инструменты, но обычным пользователям будут более удобны графические инструменты. Практически во всех дистрибутивах есть утилита Анализатор использования диска, она не требует для работы повышения прав, а также весьма проста и наглядна.

linux-disk-space-008.pngИнтерфейс программы стандартный для такого рода утилит: слева список файлов и директорий, отсортированный по размеру, а справа интерактивная диаграмма, которая может быть представлена как в круговой, так и в линейной форме. Прямо отсюда мы можем переходить в интересующие расположения, копировать ссылки на них или просто удалять файлы и директории.

linux-disk-space-009.pngНо, как мы уже говорили, утилита работает без повышения прав, поэтому столь широкий набор действий доступен пользователю только в отношении тех объектов файловой системы, на которые у него есть права, как правило это Домашняя директория. При этом ему доступен анализ всей файловой системы, только вот там он будет ограничен только просмотром.

linux-disk-space-010.pngЧто именно использовать из предложенных вариантов — личное дело каждого. Linux тем и хорош, что предоставляет множество разных путей для решения одной и той же задачи и нельзя сказать, что какой-то из этих путей правильный, а остальные нет. Все они ведут к одной цели.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Одной из распространённых задач в системном администрировании является оценка состояния жёстких дисков (а также и других устройств хранения), в том числе анализ использования дискового пространства. В Linux для таких целей давно существуют утилиты с удобным графическим интерфейсом, предоставляющих наглядную информацию о занятом пространстве в виде диаграмм и графиков. Однако, для системных администраторов, обслуживающих «серьёзные» сервера на основе Linux-систем, графический интерфейс — чрезмерное удовольствие, не оправдывающее затрачиваемых на него ресурсов. Поэтому необходимо уметь обходиться средствами командной консоли, используя специализированные консольные утилиты для анализа дискового пространства, которые доступны в виде двух команд — du и ncdu.

Содержание

  1. как посмотреть свободное место на диске
  2. Команда du – синтаксис и опции
  3. Примеры использования команды du
  4. Команда ncdu
  5. Примеры команд ncdu

как посмотреть свободное место на диске

Давайте узнаем сколько у нас свободного места в системе. Узнать это можно с помощью команды

df –h

как видим у нас диск занят на 97%, и нам необходимо узнать что у нас заняло место. Давайте этим займемся.

Disk Usage – именно так интерпретируется название команды du. Она была написана ещё в самой первой версии UNIX (в определённом роде предшественницы Linux), еще в стенах одной из лабораторий компании AT&T. Этот факт даёт понять, насколько важно следить за дисковым пространством, а также анализировать его при наличии специализированных программных инструментов, ведь du – одна из самых первых утилит из стандартного комплекта UNIX/Linux.

Итак давайте узнаем что у нас занимает место

du --max-depth=1 -h /

Более подробное описание команды du и ключей вы можете прочитать ниже. Вывод будет следующий

Отсюда мы видим что самый большой каталог у нас /var. Посмотрим что у на занимает место в каталоге /var

du --max-depth=1 -h /var

видим что это папка log

Теперь смотрим /var/log

du -ah /var/log

и вот здесь мы уже видим пять самых больших файлов с логами, именно они и заняли все место на диске. Давайте рассмотрим команду du подробнее.

Согласно описанию из официального man-руководства, утилита du суммирует использование дискового пространства набора элементов, рекурсивно с каталогами. Синтаксис команды не простой, а очень простой, поскольку представляет собой классический прототип команды Linux:

du [КЛЮЧ]… [что сканировать]…

Если дать команду du без параметров, то по-умолчанию будет выведен список всех каталогов и подкаталогов для текущего каталога. Также по-умолчанию единицей измерения объёма является 1024 байта или 512 байт, в зависимости от конфигурации используемой системы:

du code_text.txt
4    code_text.txt

Как видно, code_text.txt занимает 4 килобайта (т. к. 1024 байта = 1 килобайт) дискового пространства. То же самое и с папками, но по-умолчанию будет указан общий размер папки без детализации по файлам и подкаталогам. В следующей таблице приведены опции команды du:

Опция Назначение
-a Выводит объём для всех элементов, а не только для каталогов
—apparent-size Выводит действительные размеры, но не занимаемое место а диске
-B,

—block-size=РАЗМЕР

Задаёт использование определённых единиц измерения объёма
-b,

—bytes

То же самое, что и «—block-size —apparent-size=1»
-с,

—total

Выводит общий результат
-D,

—dereference-args

Указывает обрабатывать только те символьные ссылке, которые перечислены в командной строке
-d, —max-depth=N Выводит общий размер только до N-го уровня (включительно) дерева каталогов
-h,

—human-readable

Выводит размеры в удобном для человека виде
-k Эквивалентно —block-size=1K
-L,

—dereference

Разыменовывает символьные ссылки
-l,

—count-links

Складывает размеры, если несколько жёстких ссылок
-m Эквивалентно —block-size=1M
-t,

—threshold=РАЗМЕР

Исключает элементы, которые меньше РАЗМЕРА, если это значение положительно или размер которых больше, если это значение отрицательно
—time Выводит время последнего изменения в каталоге и во всех подкаталогах
—time=АТРИБУТ Выводит указанный атрибут времени (atime, access, use, ctime, status), а не время последнего изменения
—time-style=СТИЛЬ Выводит время в указанном в СТИЛЬ формате: full-iso, long-iso, iso
-X,

—exclude-from=ФАЙЛ

Исключает все эдементы, которые совпадают с шаблоном из ФАЙЛа
—exclude=ШАБЛОН Исключает элементы, совпадающие с шаблоном
-x,

—one-file-system

Пропускать каталоги из других систем

Используемые командой du единицы измерения размера (или объёма) задаются в формате «цифраБуква», где цифра — это коэффициент, а Буква — степень единицы измерения, например: 5K = 5 * 1024 = 5120 = 5 килобайт и по аналогии для M – мегабайт, G – гигабайт.

Примеры использования команды du

Узнать общий размер каталога (например с резервными копиями):

$ du -sh ~/home/backups
19G  /home/john/backups

Вывод размеров всех подкаталогов (рекурсивно):

$ du -h ~/home/backups/
3,2M /home/john/backups/vhosts/ssl
1,5M /home/john/backups/vhosts
5,0M /home/john/backups

С учётом файлов:

$ du -ha ~/home/backups/
4,0K /home/john/backups/.directory
764K /home/john/backups/scheme.txt
3,2M /home/john/backups/vhosts/ssl
1,5M /home/john/backups/vhosts
5,0M /home/john/backups

С фильтрацией в зависимости от размера файла/каталога:

$ du -ha -t2M ~/home/backups/
3,2M /home/john/backups/vhosts/ssl
5,0M /home/john/backups

Как видно, были отброшены файлы/каталоги размером меньше 2 мегабайт. Следующая команда, напротив — исключит из вывода только файлы/каталоги больше 2 мегабайт:

$ du -ha ~/home/backups/
4,0K /home/john/backups/.directory
764K /home/john/backups/scheme.txt
1,5M /home/john/backups/vhosts

Команда ncdu

Более удобный способ найти что занимает место на диске можно с помощью команды ncdu. Утилита ncdu (Ncurses Disk Usage) способна делать всё то же самое, что и утилита du и даже немного больше. К тому же, она предоставляет пользователю удобный в использовании псевдографический интерфейс, с помощью которого можно быстро перемещаться по дереву системы, оценивая размеры интересующих элементов  и папок.

Фактически, ncdu может выполнять функции полноценного браузера системы, при этом имеет большое количество опций, позволяющих настраивать псевдоинтерфейс для разных режимов работы, экспортировать и импортировать результаты работы в файлы, выполнять сортировки, экономить сетевой трафик, если это нужно, когда анализируется удалённая (например по SSH) система.

По-умолчанию, выполнение команды ncdu без параметров, выводит файловый браузер, в котором после предварительного сканирования (с показом прогресса выполнения) отображается список элементов и подкаталогов текущего каталога. По этому списку можно перемещаться, используя клавиши курсора, спускаться в подкаталоги (<Enter>) выходить из них, при этом информация о размере представленных элементах и папок отображается «как на ладони». В строке состояния отображается общий используемый объём (Total disk usage), фактический объём (Apparent size), а также количество файлов и папок  для текущего анализируемого каталога.

Основные опции команды ncdu:

Опция Назначение
-o ФАЙЛ Позволяет экспортировать результаты работы в указанный файл
-f ФАЙЛ Загружает из файла для отображения данные ранее экспортированные с помощью опции -o
-0 Не никаких информационных сообщений при сканировании файловой системы
-1 Подобна опции -0, но выдаёт единственную строку о статусе выполненного действия. По-умолчанию используется при экспорте в файл
-q Тихий режим. Во время сканирования директории экран с результатами сканирования будет обновляться каждые 2 секунды, вместо 10 раз за секунду. Обычно используется при работе с удаленными системами
-r Включает режим «только для чтения» для отключения встроенной функции удаления. Не работает с опцией -o
-x Не выходить за рамки текущей используемой файловой системы
—exclude ШАБЛОН Исключает из подсчёта значения размеров файлов, имена которых удовлетворяют шаблону, но эти файлы будут отображаться в списке
-X ФАЙЛ,

—exclude-from-file

Исключает из подсчёта значения размеров файлов, имена которых удовлетворяют шаблону из файла, но они также будут отображаться в списке

Интерфейс ncdu действительно очень дружественный — размеры всегда отображаются в «человекопонятных» единицах.

Для работы с псевдоинтерфейсом ncdu предусмотрен целый набор «горячих клавиш», позволяющих удалять выбранные файлы и каталоги, включать режим представления используемого пространства в процентах, отображать информацию о выбранных элементах, а также выполнять другие полезные функции. Об этом более подробно можно прочитать в соответствующих man-страницах в разделе «KEYS», используя команду man ncdu.

Примеры команд ncdu

Сделаем поиск занимаемого пространства с помощью ncdu
ncdu /

Снова видим большой каталог /var, и уже с помощью клавишь и ENTER мы можем передвигаться по каталогам. Видим каталог log

А здесь мы видим наши большие логи

Еще несколько полезных примеров.

Сканирование объёмных каталогов с экспортом/архивированием в лог для последующего использования или просмотра:

$ ncdu -1xo- / | gzip > usage_fs.gz
$ zcat usage_fs.gz | ncdu -f-

Сканирование текущей директории, экспорт результатов в лог, и последующий просмотр этих результатов в браузере ncdu:

$ ncdu -o- | tee usage_fs.txt | ncdu -f-

Работа с удалённой системой:

ssh -C username@hostname ncdu -o- / ncdu -f-

В данной команде опция -C используется для утилиты ssh для сжатия сетевого трафика при некачественном или медленном соединении.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

  • как посмотреть свободное место на диске

  • Команда du – синтаксис и опции

  • Примеры использования команды du

  • Команда ncdu

  • Примеры команд ncdu

  • Свободное место на диске (df)

  • Примечание:

  • Опция -h

  • Размер конкретного диска

  • Размер папок на диске (du)

  • Просмотр размера текущей папки

  • Посмотреть размеры всех папок

  • Отобразить размеры всех вложенных папок

  • Отсортировать папки по объёму

  • Размер папки в которой мы находимся

  • Размер произвольной папки или сразу нескольких папок

  • Сортируем вывод по размеру папок/файлов

Одной из распространённых задач в системном администрировании является оценка состояния жёстких дисков (а также и других устройств хранения), в том числе анализ использования дискового пространства. В Linux для таких целей давно существуют утилиты с удобным графическим интерфейсом, предоставляющих наглядную информацию о занятом пространстве в виде диаграмм и графиков. Однако, для системных администраторов, обслуживающих «серьёзные» сервера на основе Linux-систем, графический интерфейс — чрезмерное удовольствие, не оправдывающее затрачиваемых на него ресурсов. Поэтому необходимо уметь обходиться средствами командной консоли, используя специализированные консольные утилиты для анализа дискового пространства, которые доступны в виде двух команд — du и ncdu.

к содержанию ↑

как посмотреть свободное место на диске

Для того, чтобы посмотреть, сколько места занимает файловая система, диск, файл или каталог, в Linux существует две команды: df и du.

Df (disk free) выводит список всех файловых систем по именам устройств с указанием размера, показывает точки монтирования и количество свободного/занятого пространства.

Если мы введем команду df без ключа, у нас получится примерно вот такой вывод

1

2

3

4

5

6

7

8

9

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sda1 4673664 805492 3607720 19% /

udev 10240 0 10240 0% /dev

tmpfs 204876 4500 200376 3% /run

tmpfs 512184 0 512184 0% /dev/shm

tmpfs 5120 0 5120 0% /run/lock

tmpfs 512184 0 512184 0% /sys/fs/cgroup

/dev/sda2 945144 223548 656368 26% /var

/dev/sda3 1889292 2904 1772368 1% /home

Все данные отображаются в килобайтах, поэтому разобрать здесь что-либо непросто. Для того, чтобы информация отображалась именно так, как нам удобно, используем целый ряд ключей.

Синтаксис команды

1

# df опции файл/устройство

Список опций

-а, —all – отображение абсолютно всех файловых систем, в том числе и виртуальных;

-h, —human-readable – показ буквы для обозначения размера файла/каталога;

-I, —inodes – выводится информация об inode’ах: имя владельца, права доступа, местонахождение в системе, временные штампы;

-k, —kilobytes – вывод размеров в килобайтах;

-l,—local – показывает данные о локальных файловых системах;

— output – позволяет задать формат вывода по таким параметрам: ‘source’, ‘fstype’, ‘itotal’, ‘iused’, ‘iavail’, ‘ipcent’, ‘size’, ‘used’, ‘avail’, ‘pcent’, ‘file’ и ‘target’; по умолчанию команда показывает сразу все параметры;

-Р, —portability – вывод информации согласно стандарту Posix. Информация о конкретной файловой системе будет выводится в одну строку;

—sync – отправка системного вызова перед получением информации об использовании пространства на диске;

-t —type – вывод информации о файловых системах указанного типа;

-x —exclude type – не показывать информацию о файловых системах указанного типа.

Наиболее часто используется опция –h, поскольку она оказывает данные в килобайтах.

Вводим команду

В качестве вывода получаем более понятную картину

1

2

3

4

5

6

7

8

9

Filesystem Size Used Avail Use% Mounted on

/dev/sda1 4.5G 787M 3.5G 19% /

udev 10M 0 10M 0% /dev

tmpfs 201M 4.4M 196M 3% /run

tmpfs 501M 0 501M 0% /dev/shm

tmpfs 5.0M 0 5.0M 0% /run/lock

tmpfs 501M 0 501M 0% /sys/fs/cgroup

/dev/sda2 923M 219M 641M 26% /var

/dev/sda3 1.9G 2.9M 1.7G 1% /home

Чтобы получить информацию о всех смонтированных файловых системах, прописываем

Получаем вывод (первые 10 строк)

1

2

3

4

5

6

7

8

9

10

Filesystem 1K-blocks Used Available Use% Mounted on

rootfs - - - - /

sysfs 0 0 0 - /sys

proc 0 0 0 - /proc

udev 10240 0 10240 0% /dev

devpts 0 0 0 - /dev/pts

tmpfs 204876 4500 200376 3% /run

/dev/sda1 4673664 805492 3607720 19% /

securityfs 0 0 0 - /sys/kernel/security

tmpfs 512184 0 512184 0% /dev/shm

В выводе отображается информация как о реальных, так и виртуальных файловых системах. Для вывода данных только о реальных файловых системах используется команда

Наш список существенно уменьшился

1

2

3

4

5

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sda1 4673664 805492 3607720 19% /

udev 10240 0 10240 0% /dev

/dev/sda2 945144 223592 656324 26% /var

/dev/sda3 1889292 2904 1772368 1% /home

Можно задать файловую систему на свое усмотрение

1

2

3

4

5

root@debian:~# df -t ext4

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sda1 4673664 805492 3607720 19% /

/dev/sda2 945144 223592 656324 26% /var

/dev/sda3 1889292 2904 1772368 1% /home

Или указать интересующий раздел

1

2

3

root@debian:~# df -h /dev/sda

Filesystem Size Used Avail Use% Mounted on

udev 10M 0 10M 0% /dev

Используя опцию –i, мы можем получить данные о состоянии inode заданной нами директории.

1

2

3

root@debian:~# df -hi /dev/sda

Filesystem Inodes IUsed IFree IUse% Mounted on

udev 123K 332 123K 1% /dev

Давайте узнаем сколько у нас свободного места в системе. Узнать это можно с помощью команды

df –h

Размеры папок и дисков в Linux. Команды df и du

как видим у нас диск занят на 97%, и нам необходимо узнать что у нас заняло место. Давайте этим займемся.

к содержанию ↑

Disk Usage – именно так интерпретируется название команды du. Она была написана ещё в самой первой версии UNIX (в определённом роде предшественницы Linux), еще в стенах одной из лабораторий компании AT&T. Этот факт даёт понять, насколько важно следить за дисковым пространством, а также анализировать его при наличии специализированных программных инструментов, ведь du – одна из самых первых утилит из стандартного комплекта UNIX/Linux.

Итак давайте узнаем что у нас занимает место

du --max-depth=1 -h /

Более подробное описание команды du и ключей вы можете прочитать ниже. Вывод будет следующий

Размеры папок и дисков в Linux. Команды df и du

Отсюда мы видим что самый большой каталог у нас /var. Посмотрим что у на занимает место в каталоге /var

du --max-depth=1 -h /var

видим что это папка log

Размеры папок и дисков в Linux. Команды df и du

Теперь смотрим /var/log

du -ah /var/log

Размеры папок и дисков в Linux. Команды df и du

и вот здесь мы уже видим пять самых больших файлов с логами, именно они и заняли все место на диске. Давайте рассмотрим команду du подробнее.

Согласно описанию из официального man-руководства, утилита du суммирует использование дискового пространства набора элементов, рекурсивно с каталогами. Синтаксис команды не простой, а очень простой, поскольку представляет собой классический прототип команды Linux:

du [КЛЮЧ]… [что сканировать]…

Если дать команду du без параметров, то по-умолчанию будет выведен список всех каталогов и подкаталогов для текущего каталога. Также по-умолчанию единицей измерения объёма является 1024 байта или 512 байт, в зависимости от конфигурации используемой системы:

du code_text.txt
4    code_text.txt

Как видно, code_text.txt занимает 4 килобайта (т. к. 1024 байта = 1 килобайт) дискового пространства. То же самое и с папками, но по-умолчанию будет указан общий размер папки без детализации по файлам и подкаталогам. В следующей таблице приведены опции команды du:

Опция Назначение
-a Выводит объём для всех элементов, а не только для каталогов
—apparent-size Выводит действительные размеры, но не занимаемое место а диске
-B,

—block-size=РАЗМЕР

Задаёт использование определённых единиц измерения объёма
-b,

—bytes

То же самое, что и «—block-size —apparent-size=1»
-с,

—total

Выводит общий результат
-D,

—dereference-args

Указывает обрабатывать только те символьные ссылке, которые перечислены в командной строке
-d, —max-depth=N Выводит общий размер только до N-го уровня (включительно) дерева каталогов
-h,

—human-readable

Выводит размеры в удобном для человека виде
-k Эквивалентно —block-size=1K
-L,

—dereference

Разыменовывает символьные ссылки
-l,

—count-links

Складывает размеры, если несколько жёстких ссылок
-m Эквивалентно —block-size=1M
-t,

—threshold=РАЗМЕР

Исключает элементы, которые меньше РАЗМЕРА, если это значение положительно или размер которых больше, если это значение отрицательно
—time Выводит время последнего изменения в каталоге и во всех подкаталогах
—time=АТРИБУТ Выводит указанный атрибут времени (atime, access, use, ctime, status), а не время последнего изменения
—time-style=СТИЛЬ Выводит время в указанном в СТИЛЬ формате: full-iso, long-iso, iso
-X,

—exclude-from=ФАЙЛ

Исключает все эдементы, которые совпадают с шаблоном из ФАЙЛа
—exclude=ШАБЛОН Исключает элементы, совпадающие с шаблоном
-x,

—one-file-system

Пропускать каталоги из других систем

Используемые командой du единицы измерения размера (или объёма) задаются в формате «цифраБуква», где цифра — это коэффициент, а Буква — степень единицы измерения, например: 5K = 5 * 1024 = 5120 = 5 килобайт и по аналогии для M – мегабайт, G – гигабайт.

к содержанию ↑

Примеры использования команды du

Узнать общий размер каталога (например с резервными копиями):

$ du -sh ~/home/backups
19G  /home/john/backups

Вывод размеров всех подкаталогов (рекурсивно):

$ du -h ~/home/backups/
3,2M /home/john/backups/vhosts/ssl
1,5M /home/john/backups/vhosts
5,0M /home/john/backups

С учётом файлов:

$ du -ha ~/home/backups/
4,0K /home/john/backups/.directory
764K /home/john/backups/scheme.txt
3,2M /home/john/backups/vhosts/ssl
1,5M /home/john/backups/vhosts
5,0M /home/john/backups

С фильтрацией в зависимости от размера файла/каталога:

$ du -ha -t2M ~/home/backups/
3,2M /home/john/backups/vhosts/ssl
5,0M /home/john/backups

Как видно, были отброшены файлы/каталоги размером меньше 2 мегабайт. Следующая команда, напротив — исключит из вывода только файлы/каталоги больше 2 мегабайт:

$ du -ha ~/home/backups/
4,0K /home/john/backups/.directory
764K /home/john/backups/scheme.txt
1,5M /home/john/backups/vhosts

к содержанию ↑

Команда ncdu

Более удобный способ найти что занимает место на диске можно с помощью команды ncdu. Утилита ncdu (Ncurses Disk Usage) способна делать всё то же самое, что и утилита du и даже немного больше. К тому же, она предоставляет пользователю удобный в использовании псевдографический интерфейс, с помощью которого можно быстро перемещаться по дереву системы, оценивая размеры интересующих элементов  и папок.

Фактически, ncdu может выполнять функции полноценного браузера системы, при этом имеет большое количество опций, позволяющих настраивать псевдоинтерфейс для разных режимов работы, экспортировать и импортировать результаты работы в файлы, выполнять сортировки, экономить сетевой трафик, если это нужно, когда анализируется удалённая (например по SSH) система.

По-умолчанию, выполнение команды ncdu без параметров, выводит файловый браузер, в котором после предварительного сканирования (с показом прогресса выполнения) отображается список элементов и подкаталогов текущего каталога. По этому списку можно перемещаться, используя клавиши курсора, спускаться в подкаталоги (<Enter>) выходить из них, при этом информация о размере представленных элементах и папок отображается «как на ладони». В строке состояния отображается общий используемый объём (Total disk usage), фактический объём (Apparent size), а также количество файлов и папок  для текущего анализируемого каталога.

Основные опции команды ncdu:

Опция Назначение
-o ФАЙЛ Позволяет экспортировать результаты работы в указанный файл
-f ФАЙЛ Загружает из файла для отображения данные ранее экспортированные с помощью опции -o
-0 Не никаких информационных сообщений при сканировании файловой системы
-1 Подобна опции -0, но выдаёт единственную строку о статусе выполненного действия. По-умолчанию используется при экспорте в файл
-q Тихий режим. Во время сканирования директории экран с результатами сканирования будет обновляться каждые 2 секунды, вместо 10 раз за секунду. Обычно используется при работе с удаленными системами
-r Включает режим «только для чтения» для отключения встроенной функции удаления. Не работает с опцией -o
-x Не выходить за рамки текущей используемой файловой системы
—exclude ШАБЛОН Исключает из подсчёта значения размеров файлов, имена которых удовлетворяют шаблону, но эти файлы будут отображаться в списке
-X ФАЙЛ,

—exclude-from-file

Исключает из подсчёта значения размеров файлов, имена которых удовлетворяют шаблону из файла, но они также будут отображаться в списке

Интерфейс ncdu действительно очень дружественный — размеры всегда отображаются в «человекопонятных» единицах.

Для работы с псевдоинтерфейсом ncdu предусмотрен целый набор «горячих клавиш», позволяющих удалять выбранные файлы и каталоги, включать режим представления используемого пространства в процентах, отображать информацию о выбранных элементах, а также выполнять другие полезные функции. Об этом более подробно можно прочитать в соответствующих man-страницах в разделе «KEYS», используя команду man ncdu.

к содержанию ↑

Примеры команд ncdu

Сделаем поиск занимаемого пространства с помощью ncdu
ncdu /

Размеры папок и дисков в Linux. Команды df и du

Снова видим большой каталог /var, и уже с помощью клавишь и ENTER мы можем передвигаться по каталогам. Видим каталог log

Размеры папок и дисков в Linux. Команды df и du

А здесь мы видим наши большие логи

Размеры папок и дисков в Linux. Команды df и du

Еще несколько полезных примеров.

Сканирование объёмных каталогов с экспортом/архивированием в лог для последующего использования или просмотра:

$ ncdu -1xo- / | gzip > usage_fs.gz
$ zcat usage_fs.gz | ncdu -f-

Сканирование текущей директории, экспорт результатов в лог, и последующий просмотр этих результатов в браузере ncdu:

$ ncdu -o- | tee usage_fs.txt | ncdu -f-

Работа с удалённой системой:

ssh -C username@hostname ncdu -o- / ncdu -f-

В данной команде опция -C используется для утилиты ssh для сжатия сетевого трафика при некачественном или медленном соединении.

к содержанию ↑

Свободное место на диске (df)

Для просмотра свободного и занятого места на разделах диска в Linux можно воспользоваться командой df.

Первым делом можно просто ввести команду df без каких-либо аргументов и получить занятое и свободное место на дисках. Но по умолчанию вывод команды не очень наглядный — например, размеры выводятся в КБайтах (1К-блоках).

Примечание:

df не отображает информацию о не смонтированных дисках.

Опция -h

Опция -h (или —human-readable) позволяет сделать вывод более наглядным. Размеры выводятся теперь в ГБайтах.

df -h

Размер конкретного диска

Команде df можно указать путь до точки монтирования диска, размер которого вы хотите вывести:

df -h /dev/sda9

Размер папок на диске (du)

Для просмотра размеров папок на диске используется команда du. Если просто ввести команду без каких либо аргументов, то она рекурсивно проскандирует вашу текущую директорию и выведет размеры всех файлов в ней. Обычно для du указывают путь до папки, которую вы хотите проанализировать. Если нужно просмотреть размеры без рекурсивного обхода всех папок, то используется опция -s (—summarize). Также как и с df, добавим опцию -h (—human-readable).

к содержанию ↑

Просмотр размера текущей папки

Чтобы показать объем просто одного текущего каталога (со всеми вложенными файлами + подкаталогами) подойдёт команда du с ключиком -sh.

Вот пример, как определить размер директории данного сайта:

du -sh

Посмотреть размеры всех папок

Если нужно посчитать вес всех директорий плюс файлы — добавляем звёздочку:

du -sh *

Отобразить размеры всех вложенных папок

Чтобы проверить информацию в том числе вообще по всем папкам, вместе со вложенными — понадобится самый короткий вариант:

du -h

Внимание: если такой случайно запустить в корне на объёмном диске с большим количеством информации — лучше сразу жмите CTRL-C, т.к. во-первых, иначе придётся сильно подождать 😉 , во-вторых, десятки-сотни экранов информации будут бессмысленными. Потому эта простая команда должна использоваться лишь для, соответственно, простых случаев.

к содержанию ↑

Отсортировать папки по объёму

du -s *| sort -nr

Покажет объём в килобайтах с сортировкой — самые большие папки/файлы сверху. Если нужно в мегабайтах:

du -sm *| sort -nr

К сожалению более удобный ключик h («human» — автовыбор кило-мега-гига) в данном случае (du -sh *| sort -nr) не подойдёт, т.к. сортировка идёт по «числам» (не учитывая, что это KB/MB/GB). Для этого придётся использовать длинную команду:

du -s *|sort -nr|cut -f 2-|while read a;do du -hs $a;done

Чтобы получить подробнейшую информацию о размере папок в Linux, лучше воспользоваться командой du в терминале.

Вся структура утилиты du выглядит следующим образом:

du
du название_папки
du [опция] название_папки

При выполнении команды du (без указания папки и опции) вы получите все файлы и папки текущей директории с их размерами.

к содержанию ↑

Размер папки в которой мы находимся

// в килобайтах (по умолчанию)
du -s
// в килобайтах    
du -sk
// в байтах    
du -sb
// в мегабайтах    
du -sm
// в удобном формате (часто используемый)   
du -sh
// Глубина
du -h --max-depth=1

Размер произвольной папки или сразу нескольких папок

// Размер произвольной папки   
du -sh   /home/images
// Размер всех объектов в папке:
du -sh *
// Добавим в вывод итоговый размер папки с помощью ключа -с:
du -sсh *
// И то же самое для произвольного пути:
du -sh /home/*

Сортируем вывод по размеру папок/файлов

Используем команду sort.

Параметр -n указывает, что нужно использовать числовую сортировку, а -r задает обратный порядок (т.е. самые большие папки будут выведены первыми):

du -sh * | sort -nr

Привет, как посмотреть, что занимает место? df -h говорит, что занято 25гб, однако по факту только 9гб, ncdu / сказала, что тоже 9гб занято:

[root@erp /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 30G 25G 3.1G 90% /
tmpfs 939M 4.0K 939M 1% /dev/shm
/dev/sda1 240M 38M 190M 17% /boot
[root@erp /]# du -shx /
9.3G /
[root@erp /]#

В чем дело? Как посмотреть, что еще занимает место?


  • Вопрос задан

    более трёх лет назад

  • 12775 просмотров

Вероятно запущенные процессы удерживают открытыми дескрипторы уже удалённых файлов, что не позволяет освободить занятое место ФС.

Список дескрипторов и процессов можно получить например так:
sudo lsof -a +L1
Пример строки от меня:

COMMAND     PID   USER   FD   TYPE DEVICE   SIZE/OFF NLINK    NODE NAME
php       17455 melkij    4r   REG  254,1 1048576000     0 2624572 /home/melkij/tmpfile (deleted)

php процесс с pid 17455 удерживает deleted дескриптор файла размером в 1гб.

Далее адресно разбираться с процессами.

Пригласить эксперта

установи ncdu — очень удобная навигация и сразу понятно где «большая» папка, а где не очень.

cd /
du -sh *
как то-то так ?
Ну или так
du -sh * | grep G
( только гигабайты)


  • Показать ещё
    Загружается…

28 мая 2023, в 12:45

1000 руб./в час

28 мая 2023, в 12:17

1500 руб./за проект

28 мая 2023, в 12:10

2000 руб./за проект

Минуточку внимания

Понравилась статья? Поделить с друзьями:
  • Как найти воздушный куб на 1 человека
  • Юбка поднимается как исправить
  • Как найти давление тела на поверхность формула
  • Вот идешь нашел как писать
  • Как найти косинус угла между диагоналями параллелепипеда