← Назад к вопросам

Что покажет команда du

1.0 Junior🔥 191 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что показывает команда du

Команда du (Disk Usage) — это стандартная утилита в Unix-подобных системах (Linux, macOS, BSD), предназначенная для оценки использования дискового пространства файлами и директориями. Её основная задача — показать, сколько места на диске занимает указанная файловая иерархия, с возможностью агрегации и детализации на разных уровнях.

Ключевая информация, которую предоставляет du

По умолчанию (без аргументов, в текущей директории) du рекурсивно обходит все поддиректории и файлы, выводя для каждой директории суммарный размер всех файлов, содержащихся в ней (включая вложенные поддиректории). Размер по умолчанию отображается в блоках (обычно 1 блок = 512 байт или 1024 байта, в зависимости от системы и версии), но чаще всего используется флаг для человеко-читаемого формата.

Основные единицы измерения и форматы вывода

  • Блоки: Исторический и системно-[зависимый] вывод.
  • Килобайты (КБ): Флаг -k.
  • Мегабайты (МБ): Флаг -m.
  • Гигабайты (ГБ): Флаг -g.
  • "Человеко-читаемый" формат: Флаг -h (или --human-readable) — самый популярный вариант. du автоматически подбирает единицу (КБ, МБ, ГБ) для наглядности.
    du -h /var/log
    
    Пример вывода:
```
4.0K    /var/log/private
12M     /var/log/apache2
128K    /var/log/installer
1.2G    /var/log
```

Практическое применение и полезные флаги

В DevOps и системном администрировании du — инструмент первого вызова для диагностики проблем с дисковым пространством.

  1. Поиск самых "тяжелых" директорий: Комбинация с sort и head.
    du -h /home | sort -rh | head -10
    
    Эта команда покажет **ТОП-10 самых объемных директорий** внутри `/home`.

  1. Общий размер директории без детализации: Флаг -s (summarize).
    du -sh /opt/mysql_data
    
    Выведет одну строку: общий размер директории `/opt/mysql_data`.

  1. Исключение определенных файловых систем или типов: Флаг --exclude и -x.
    du -shx --exclude="*.log" /var
    
    Здесь `-x` предотвращает подсчет файлов из других смонтированных файловых систем, а `--exclude` игнорирует файлы с расширением `.log`.

  1. Отображение размера всех файлов, а не только директорий: Флаг -a (all).
    du -ah /etc/nginx/conf.d | head -5
    
    Полезно для точечного анализа.

  1. Изменение единицы измерения:
    du -BM /backup  # Размер в Мегабайтах
    du -BK /tmp     # Размер в Килобайтах
    

Важные нюансы для DevOps-

  • du vs df: du считает фактическую сумму размеров файлов, тогда как df показывает свободное/занятое пространство с точки зрения файловой системы (учитывая удаленные файлы, still held by processes, и метаданные). Расхождение между du -sh / и df -h / может указывать на "утечку" дискового пространства (например, удаленные файлы, которые все еще держат процессы).
  • Символические ссылки: По умолчанию du считает размер самой ссылки, а не целевого файла/директории. Флаг -L (dereference) заставит его следовать по симлинкам и учитывать размер цели.
  • Производительность: На файловых системах с огромным количеством файлов (миллионы) du может работать долго. В таких случаях иногда предпочтительнее использовать ncdu (интерактивный аналог) или точечные запросы.
  • Сценарии мониторинга: du часто используется в скриптах для отслеживания роста логов, дампов БД, кэшей приложений.
    # Пример скрипта для алерта
    USAGE=$(du -s /opt/app_logs | awk '{print $1}')
    if [ $USAGE -gt 10000000 ]; then  # Если больше 10ГБ в блоках
        echo "ALERT: Log directory size exceeded!" | mail -s "Disk Alert" admin@example.com
    fi
    

Таким образом, du — это фундаментальный инструмент аудита дискового пространства, позволяющий быстро локализовать "пожирателей" места, спланировать очистку и интегрировать проверки в системы мониторинга.