du

Что делает команда du в Linux

Команда du в Linux используется для отображения информации о размере файлов и директорий. Она помогает определить, какие папки занимают больше всего места на диске, и часто применяется системными администраторами, DevOps-инженерами и пользователями, которые хотят оптимизировать использование хранилища.

Название команды происходит от слов disk usage — «использование диска». В отличие от команды df, которая показывает общий объем доступного и занятого пространства, du фокусируется на размерах отдельных каталогов и файлов.

По умолчанию команда du в Linux выводит размер текущего каталога и всех вложенных директорий в блоках по 1 килобайту. Для более точного анализа часто применяют дополнительные параметры.

Основные параметры команды du

Параметр -h — человеко-читаемый формат

Когда используется флаг -h, команда отображает размеры в понятных единицах — килобайтах (K), мегабайтах (M), гигабайтах (G):

Bash
du -h /var/log

Результат покажет список директорий и файлов с указанием реальных размеров, например 4.0K, 12M, 1.2G. Это удобно для быстрого анализа без пересчета байтов вручную.

Совет: всегда используйте -h, если вам нужно быстро оценить размер каталогов. Это экономит время и снижает вероятность ошибок при чтении данных.

Параметр -s — суммарная информация

Если нужно узнать общий размер каталога без вывода всех поддиректорий, применяется опция -s:

Bash
du -sh /home/user

Команда выведет только одну строку с итоговым размером всей директории /home/user. Этот параметр особенно полезен при работе с большими структурами каталогов.

Параметр -a — вывод всех файлов

Флаг -a заставляет команду du в Linux показывать не только каталоги, но и отдельные файлы:

Bash
du -ah /etc

Так можно получить полную картину использования пространства. Опция часто применяется при поиске крупных файлов, занимающих много места.

Параметр --max-depth — ограничение глубины

Этот параметр позволяет ограничить количество уровней вложенности, для которых отображается информация:

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

Здесь --max-depth=1 означает, что будет показан размер самой директории /var и всех папок внутри нее, но без углубления дальше.

Совет: используйте этот флаг, если хотите получить обзор верхнего уровня каталогов и понять, где сосредоточено основное использование диска.

Параметр --time — дата последнего изменения

Чтобы увидеть дату последнего изменения содержимого директории, применяют параметр --time:

Bash
du -h --time /var/log

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

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

Анализ размера всех домашних каталогов

Для оценки использования диска всеми пользователями можно выполнить:

Bash
du -sh /home/*

Каждый подкаталог /home будет отображен с общим объемом занимаемого места. Это помогает системным администраторам контролировать пространство и выявлять пользователей с чрезмерным объемом данных.

Поиск самых больших директорий

Чтобы найти папки, которые занимают больше всего места, можно объединить команду du в Linux с sort:

Bash
du -h --max-depth=1 / | sort -hr | head -n 10

Эта комбинация выведет 10 самых «тяжелых» каталогов в корневой директории, начиная с самых крупных.

Вывод размера конкретного файла

Хотя основное предназначение du — работа с каталогами, она также может показать размер конкретного файла:

Bash
du -h /var/log/syslog

Если вы хотите узнать, насколько большой системный лог, этот способ будет самым быстрым.

Исключение определенных директорий

Иногда нужно исключить из анализа определенные каталоги. Для этого используется параметр --exclude:

Bash
du -h --exclude=/var/cache /var

Команда покажет использование диска для /var, но пропустит папку /var/cache. Это удобно при анализе системных директорий, где временные файлы могут искажать картину.

Комбинации и продвинутые варианты

Использование с grep для фильтрации

Можно отфильтровать результаты по ключевому слову, например, чтобы увидеть только каталоги с названием «log»:

Bash
du -h /var | grep log

Так легко находить каталоги логов среди множества других папок.

Использование вместе с sort и head

Еще один пример для системных администраторов:

Bash
du -ah /var | sort -rh | head -n 20

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

Пример с анализом нескольких директорий

Если нужно сравнить использование разных путей:

Bash
du -sh /etc /var /usr /opt

Вывод покажет краткий отчет по каждому каталогу. Это особенно полезно перед очисткой или переносом данных.

Советы по эффективному использованию

Совет 1: используйте сочетание du -sh * | sort -h, чтобы получить список директорий и файлов по возрастанию их размера. Это помогает быстро находить крупные элементы.
Совет 2: при регулярном анализе диска добавьте команду du в cron-задачи — это позволит автоматически собирать статистику и сохранять результаты в файл для последующего анализа.

Полезные флаги и особенности

  • --apparent-size — показывает логический размер файлов, а не фактический, занимаемый на диске.
  • --block-size=1M — задает единицу измерения, например мегабайты.
  • --exclude-from=file — позволяет указать список исключений в отдельном файле.
  • --si — использует степенные единицы (1000 вместо 1024).

Команда du в Linux — это мощный инструмент для анализа использования пространства. С помощью различных параметров и комбинаций с другими утилитами (например, sort, grep, head) можно быстро определить, какие каталоги занимают больше всего места, и оптимизировать хранение данных.