Анализ может быть немного упрощен при использовании -Pопции, которая гарантирует, что:
Информация о каждой файловой системе всегда печатается ровно в одну строку; устройство монтирования никогда не ставится на линию само по себе. Это означает, что если имя устройства монтирования имеет длину более 20 символов (например, для некоторых сетевых монтирований), столбцы будут выровнены неправильно.
Это значительно упрощает получение только свободного места:
$ df -Ph.| tail -1| awk '{print $4}'
( -hиспользует мегабайты, гигабайты и т. д. Если в вашей системе их нет, используйте -kтолько для килобайтов.)
Если мы передадим dfпуть, он вернет только 2 строки: строку заголовка и затем данные о файловой системе, которая содержит путь. Мы можем использовать хвост, чтобы захватить только второй ряд. Мы знаем, что доступное пространство находится в 4-м столбце, поэтому мы берем его с помощью awk. Это все можно сделать с помощью awk:
Вы можете оптимизировать свою команду, используя переменную среды $PWDвместо использования подстановки команд и устраняя необходимость в хвосте: df -Ph $PWD | awk 'NR==2{print $4}'
SiegeX
@ SiegeX: Я согласен, что все awkбудет лучше. Я включил более длинную команду, потому что хотел получить пример того, как можно составить цепочку простых команд, чтобы сделать что-то более сложное. Я обновил ответ, чтобы включить ваше улучшение.
Стивен Д
-Pстандартный ( Pдля POSIX). Но -hэто расширение GNU (также существует в некоторых других системах, но, например, в OpenBSD оно несовместимо -P).
Жиль "ТАК - перестань быть злым"
Вы можете сделать это без использования переключателя --output = df -h --output=avail . | tail -1
Floyd
«Вы можете оптимизировать свою команду». На самом деле, нет. Выполнение обоих каналов 10'000 раз (как в time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }) не обнаруживает значимой разницы в скорости, что не удивительно - вызов tailне дорогой и awkбудет сэкономлен, чтобы пропустить до конца ввода ... Возможно, была разница PDP-11 ...
Дэвид Тонхофер
10
Как насчет того, чтобы делать df -h .. Это даст вам доступное свободное пространство раздела, в котором находится ваш текущий рабочий каталог.
Небольшой пример:
/usr/local/nagios/libexec # df -h .FilesystemSizeUsedAvailUse%Mounted on
/dev/mapper/vg00-lvol1
9.9G6.1G3.4G65%/
du -h
?Ответы:
Анализ может быть немного упрощен при использовании
-P
опции, которая гарантирует, что:Это значительно упрощает получение только свободного места:
(
-h
использует мегабайты, гигабайты и т. д. Если в вашей системе их нет, используйте-k
только для килобайтов.)Если мы передадим
df
путь, он вернет только 2 строки: строку заголовка и затем данные о файловой системе, которая содержит путь. Мы можем использовать хвост, чтобы захватить только второй ряд. Мы знаем, что доступное пространство находится в 4-м столбце, поэтому мы берем его с помощьюawk
. Это все можно сделать с помощьюawk
:или много других наборов фильтров .
источник
$PWD
вместо использования подстановки команд и устраняя необходимость в хвосте:df -Ph $PWD | awk 'NR==2{print $4}'
awk
будет лучше. Я включил более длинную команду, потому что хотел получить пример того, как можно составить цепочку простых команд, чтобы сделать что-то более сложное. Я обновил ответ, чтобы включить ваше улучшение.-P
стандартный (P
для POSIX). Но-h
это расширение GNU (также существует в некоторых других системах, но, например, в OpenBSD оно несовместимо-P
).df -h --output=avail . | tail -1
time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }
) не обнаруживает значимой разницы в скорости, что не удивительно - вызовtail
не дорогой иawk
будет сэкономлен, чтобы пропустить до конца ввода ... Возможно, была разница PDP-11 ...Как насчет того, чтобы делать
df -h .
. Это даст вам доступное свободное пространство раздела, в котором находится ваш текущий рабочий каталог.Небольшой пример:
источник
В байтах:
Человек читаемый:
или
или
источник