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

«Что показывает команда du в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Команда du (disk usage) показывает размер файлов и директорий на диске. Ключевое отличие от ls -l в том, что du показывает фактический объем, занимаемый файлом в файловой системе (с учетом размера блока), и может рекурсивно суммировать размеры всех файлов внутри директорий.

Основные опции и примеры использования:

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

# 2. Показать только итоговый суммарный размер указанной директории
#    -s (summarize), -h (human-readable)
du -sh /var/log/
# Вывод: 1.2G    /var/log/

# 3. Показать размер всех элементов в текущей директории с глубиной 1
#    --max-depth=1 ограничивает рекурсию
sudo du -h --max-depth=1 /home/
# Вывод примерный:
# 4.0K    /home/lost+found
# 15G     /home/user1
# 8.2G    /home/user2
# 23G     /home/

# 4. Показать размер файлов, отсортированный по убыванию (часто используется с head)
#    -a показывает и файлы тоже
sudo du -ah /var/log/ | sort -rh | head -20

# 5. Исключить определенные шаблоны файлов из подсчета
#    --exclude="*.log" игнорирует файлы .log
du -sh --exclude="*.cache" ~/

Важные нюансы:

  • du считает дисковое пространство, занятое файлами. Для анализа использования диска с точки зрения файловой системы (занятые inode, свободное место) используется команда df.
  • Для интерактивного анализа больших директорий удобнее использовать утилиту ncdu.
  • Размер, показанный du, может быть больше логического размера файлов из-за размера блока файловой системы (например, маленький файл в 1 байт может занимать 4КБ на диске).