Поддерживают ли du и df human-readable формат
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Поддержка 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 формат в интерактивном режиме, а для скриптов выбирать опции в зависимости от требуемой точности и совместимости.