du
Что делает команда du в Linux
Команда du в Linux используется для отображения информации о размере файлов и директорий. Она помогает определить, какие папки занимают больше всего места на диске, и часто применяется системными администраторами, DevOps-инженерами и пользователями, которые хотят оптимизировать использование хранилища.
Название команды происходит от слов disk usage — «использование диска». В отличие от команды df, которая показывает общий объем доступного и занятого пространства, du фокусируется на размерах отдельных каталогов и файлов.
По умолчанию команда du в Linux выводит размер текущего каталога и всех вложенных директорий в блоках по 1 килобайту. Для более точного анализа часто применяют дополнительные параметры.
Основные параметры команды du
Параметр -h — человеко-читаемый формат
Когда используется флаг -h, команда отображает размеры в понятных единицах — килобайтах (K), мегабайтах (M), гигабайтах (G):
du -h /var/log
Результат покажет список директорий и файлов с указанием реальных размеров, например 4.0K, 12M, 1.2G. Это удобно для быстрого анализа без пересчета байтов вручную.
-h, если вам нужно быстро оценить размер каталогов. Это экономит время и снижает вероятность ошибок при чтении данных.Параметр -s — суммарная информация
Если нужно узнать общий размер каталога без вывода всех поддиректорий, применяется опция -s:
du -sh /home/user
Команда выведет только одну строку с итоговым размером всей директории /home/user. Этот параметр особенно полезен при работе с большими структурами каталогов.
Параметр -a — вывод всех файлов
Флаг -a заставляет команду du в Linux показывать не только каталоги, но и отдельные файлы:
du -ah /etc
Так можно получить полную картину использования пространства. Опция часто применяется при поиске крупных файлов, занимающих много места.
Параметр --max-depth — ограничение глубины
Этот параметр позволяет ограничить количество уровней вложенности, для которых отображается информация:
du -h --max-depth=1 /var
Здесь --max-depth=1 означает, что будет показан размер самой директории /var и всех папок внутри нее, но без углубления дальше.
Параметр --time — дата последнего изменения
Чтобы увидеть дату последнего изменения содержимого директории, применяют параметр --time:
du -h --time /var/log
Вывод будет включать дополнительную колонку с временной меткой. Это удобно, если нужно узнать, когда в последний раз обновлялись файлы в каталоге.
Примеры использования команды du в Linux
Анализ размера всех домашних каталогов
Для оценки использования диска всеми пользователями можно выполнить:
du -sh /home/*
Каждый подкаталог /home будет отображен с общим объемом занимаемого места. Это помогает системным администраторам контролировать пространство и выявлять пользователей с чрезмерным объемом данных.
Поиск самых больших директорий
Чтобы найти папки, которые занимают больше всего места, можно объединить команду du в Linux с sort:
du -h --max-depth=1 / | sort -hr | head -n 10
Эта комбинация выведет 10 самых «тяжелых» каталогов в корневой директории, начиная с самых крупных.
Вывод размера конкретного файла
Хотя основное предназначение du — работа с каталогами, она также может показать размер конкретного файла:
du -h /var/log/syslog
Если вы хотите узнать, насколько большой системный лог, этот способ будет самым быстрым.
Исключение определенных директорий
Иногда нужно исключить из анализа определенные каталоги. Для этого используется параметр --exclude:
du -h --exclude=/var/cache /var
Команда покажет использование диска для /var, но пропустит папку /var/cache. Это удобно при анализе системных директорий, где временные файлы могут искажать картину.
Комбинации и продвинутые варианты
Использование с grep для фильтрации
Можно отфильтровать результаты по ключевому слову, например, чтобы увидеть только каталоги с названием «log»:
du -h /var | grep log
Так легко находить каталоги логов среди множества других папок.
Использование вместе с sort и head
Еще один пример для системных администраторов:
du -ah /var | sort -rh | head -n 20
Эта команда выведет 20 самых больших файлов и каталогов в /var, что помогает быстро обнаружить, где расходуется место.
Пример с анализом нескольких директорий
Если нужно сравнить использование разных путей:
du -sh /etc /var /usr /opt
Вывод покажет краткий отчет по каждому каталогу. Это особенно полезно перед очисткой или переносом данных.
Советы по эффективному использованию
du -sh * | sort -h, чтобы получить список директорий и файлов по возрастанию их размера. Это помогает быстро находить крупные элементы.du в cron-задачи — это позволит автоматически собирать статистику и сохранять результаты в файл для последующего анализа.Полезные флаги и особенности
--apparent-size— показывает логический размер файлов, а не фактический, занимаемый на диске.--block-size=1M— задает единицу измерения, например мегабайты.--exclude-from=file— позволяет указать список исключений в отдельном файле.--si— использует степенные единицы (1000 вместо 1024).
Команда du в Linux — это мощный инструмент для анализа использования пространства. С помощью различных параметров и комбинаций с другими утилитами (например, sort, grep, head) можно быстро определить, какие каталоги занимают больше всего места, и оптимизировать хранение данных.