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

Поддерживают ли du и df human-readable формат

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

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

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

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

Поддержка human-readable формата в du и df

Да, обе утилиты du (disk usage) и df (disk free) поддерживают human-readable формат вывода, который автоматически подбирает наиболее удобные единицы измерения (килобайты, мегабайты, гигабайты и т.д.) для отображения размеров. Это значительно упрощает чтение данных, особенно при работе с большими объёмами данных.

Ключевые опции для human-readable вывода

Обе утилиты предоставляют несколько опций для достижения читаемого формата, но наиболее распространённой и стандартной является -h.

Для du:

  • -h или --human-readable: вывод размеров в удобочитаемом виде (например, 1K, 234M, 2G).
  • --si: использует степени 10 (система СИ) вместо степеней 2. Например, 1K будет означать 1000 байт, а не 1024. Обычно -h использует степени 2 (где 1K = 1024 байт), но с --si это меняется.
  • Альтернатива: --block-size=SIZE, где SIZE можно задать как K, M, G и т.д., но это менее удобно, чем -h.

Для df:

  • -h или --human-readable: аналогично du, выводит информацию о свободном месте в читаемом формате.
  • -H или --si: использует степени 10 (например, 1K = 1000 байт). Обратите внимание, что -H и --si синонимы в df.
  • Важно: в некоторых старых системах опция -h может отсутствовать, но в современных Linux и macOS она поддерживается повсеместно.

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

Ниже приведены практические примеры, которые я часто применяю в работе для мониторинга дискового пространства.

Пример с du:
Допустим, нужно узнать размер текущего каталога в читаемом формате:

du -h .

Вывод может выглядеть так:

4.0K    ./subdir1
12M     ./subdir2
1.2G    ./large_dir
1.3G    .

Для рекурсивного анализа с сортировкой по размеру (часто полезно при поиске "тяжёлых" папок):

du -h /var/log | sort -hr | head -10

Пример с df:
Чтобы проверить свободное место на всех смонтированных файловых системах:

df -h

Вывод:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G   15G  4.5G  77% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
/dev/sdb1       100G   30G   70G  30% /data

Для мониторинга конкретной файловой системы, например, корня (/):

df -h /

Дополнительные нюансы и лучшие практики

  • Совместимость: Опция -h является стандартной в GNU-версиях утилит (часто используемых в Linux). В BSD-системах (например, macOS) du и df также поддерживают -h, но могут быть альтернативы вроде -k для килобайт. Для кросс-платформенных скриптов рекомендуется проверять документацию (man du или man df).
  • Точность: В human-readable формате значения округляются, что может приводить к небольшим расхождениям. Если нужны точные числа в байтах, используйте опцию -b в du (для вывода в байтах) или --bytes в df.
  • Автоматизация: При написании скриптов для автоматизации (например, для мониторинга места на диске) я предпочитаю использовать df -h совместно с инструментами типа awk для парсинга. Например, чтобы получить процент использования корневой файловой системы:
df -h / | awk 'NR==2 {print $5}' | tr -d '%'
  • Производительность: du может работать медленно на больших директориях, так как рекурсивно обходит файлы. Для ускорения можно ограничить глубину сканирования опцией --max-depth=N. Например, du -h --max-depth=1 /home покажет размеры только первых подкаталогов в /home.

В итоге, -h — это базовый и essential флаг для повседневного использования du и df. Он экономит время и снижает когнитивную нагрузку при анализе дискового пространства, что критически важно в DevOps-практиках, где мониторинг ресурсов является рутинной задачей. Я настоятельно рекомендую всегда использовать human-readable формат в интерактивном режиме, а для скриптов выбирать опции в зависимости от требуемой точности и совместимости.

Поддерживают ли du и df human-readable формат | PrepBro