Пишу установщик на bash. Пользователь перейдет в целевой каталог и запустит сценарий установки, поэтому первым делом следует проверить, достаточно ли места. Я знаю, что df сообщит обо всех файловых системах, но мне было интересно, есть ли способ получить свободное пространство только для раздела, на котором находится целевой каталог.
Изменить - ответ, который я придумал
df $PWD | awk '/[0-9]%/{print $(NF-2)}'
Немного странно, потому что df, похоже, форматирует свой вывод, чтобы он соответствовал терминалу, поэтому с длинным именем точки монтирования вывод смещается на строку
-P
флагdf
, чтобы получить все в одной строке.du -hs .
с просмотром используемого дискового пространства для текущего каталога.Ответы:
Да:
для текущего каталога.
если вы хотите проверить конкретный каталог.
Вы также можете проверить
stat(1)
команду, если она есть в вашей системе. Вы можете указать форматы вывода, чтобы облегчить анализ сценария. Вот небольшой пример:источник
-k
. (coreutils df по умолчанию имеет 1k блоков, поэтому вы в значительной степени в безопасности в Linux - но если у вас есть coreutils, у вас естьstat
, и это даже безопаснее - синтаксический анализ не требуется).%a*%s
вместо%a*%S
. Не уверен, разница это или опечатка.%S
(заглавная). Не могу найти файловую систему, к которой%s != %S
у меня тоже есть доступ к нескольким RedHats, поэтому не могу проверить :-(df
команда: Отчет об использовании дискового пространства файловой системыdu
команда: Оценить использование файлового пространстваВведите
df -h
или,df -k
чтобы указать свободное место на диске:ИЛИ
du
показывает, сколько места используют один или несколько файлов или каталогов:-s
Вариант суммирует пространство каталог использует и-h
параметр обеспечивает человеко-читаемый вывод.источник
Я думаю, что это должен быть комментарий или редактирование ответа ThinkingMedia на этот самый вопрос ( проверьте свободное место на диске для текущего раздела в bash ), но мне не разрешено комментировать (недостаточно репутации), и мое изменение было отклонено (причина: «это должен быть комментарий или ответ»). Так что, пожалуйста, силы вселенной ТАК, не проклинайте меня за повторение и исправление чужого «ответа». Но кто-то в Интернете ошибался! ™ и не разрешили мне это исправить.
Код
имеет существенный недостаток: да, он будет выводить
50G
бесплатно как 50, но он также будет выводить5.0M
бесплатно как 50, или3.4G
свободный как 34, или15K
свободный как 15.Чтобы создать скрипт с целью проверки определенного количества свободного дискового пространства, вы должны знать устройство, с которым вы проверяете. Удалите его (как
sed
в примере выше) числа больше не имеют смысла.Если вы действительно хотите, чтобы он работал, вам нужно будет сделать что-то вроде:
Также для установщика
df -k $INSTALL_TARGET_DIRECTORY
может иметь больше смысла, чемdf -k "$PWD"
. Наконец, обратите внимание, что--output
флаг доступен не во всех версиях df / linux.источник
--output=avail
таким образом вы получаете размер в байтах.
источник
--output=avail
Полный пример для тех, кто может захотеть использовать это для отслеживания точки монтирования на сервере. В этом примере проверяется, находится ли / var / spool ниже 5G, и отправляется электронное письмо человеку:
источник
Чтобы узнать об использовании конкретного каталога в ГБ или ТБ в Linux, команда:
df -h / каталог / внутренний_каталог /
df -sh / каталог / внутренний_каталог /
и чтобы узнать, как используется конкретный каталог в битах в Linux, команда:
df-k / каталог / внутренний_каталог /
источник
Введите в командной оболочке:
или
или
Он покажет список свободного дискового пространства для каждой точки монтирования.
Вы также можете отображать / просматривать отдельные столбцы.
Тип:
Примечание. Здесь 3 - номер столбца. Вы можете выбрать, какой столбец вам нужен.
источник