Проверьте, не меньше ли свободного места на диске из командной строки
На askubuntu есть несколько вопросов и ответов о просмотре места на диске из командной строки.
Естественно, df
это инструмент для этого.
Тем не менее, я хочу, чтобы при входе в систему скрипт вызывал предупреждение, если свободное место на диске ниже некоторого порога.
к несчастью df
кажется, использует столбцы произвольного размера, и я не уверен, как извлечь только значение из интересующего меня столбца.
Например:
$ df /dev/mapper/root
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/root 2563092 1649968 763212 69% /
$ df /dev/mapper/root | tail -n 1
/dev/mapper/root 2563092 1649968 763212 69% /
$ df /dev/mapper/root | tail -n 1 | cut -d ' ' -f 9
763212
Я действительно хочу четвертую колонку, но я должен попросить девятую.
Есть ли более простой способ извлечь значение столбца из df
или другой способ получить доступ к этому значению.
3 ответа
Если вы используете Ubuntu 14.04 или более позднюю версию, df
может выводить только те значения, которые вы хотите:
$ df --output=avail /
Avail
15127808
От man df
:
--output[=FIELD_LIST]
use the output format defined by FIELD_LIST, or print all fields
if FIELD_LIST is omitted.
...
FIELD_LIST is a comma-separated list of columns to be included. Valid
field names are: 'source', 'fstype', 'itotal', 'iused', 'iavail',
'ipcent', 'size', 'used', 'avail', 'pcent' and 'target' (see info
page).
Как отметил Дрю Ноакс, эта способность была добавлена в GNU coreutils
8.21, и поэтому недоступен в старых версиях Ubuntu.
Для выбора полей awk
это гораздо лучший инструмент, чем cut
и вы можете опираться на ответ Яна для этого после выбора полей, которые вы хотите df
выводить.
Просто понял, что это не то, что было запрошено, это показывает предупреждение, если используемое пространство больше, чем предопределенный порог. Я оставлю это для дальнейшего использования.
Вы можете использовать что-то вроде скрипта ниже
#!/bin/bash
X=
X=$(du -sc | awk 'NR < 2' | awk '{ print $1 }')
if [ $X -gt 999000 ]; then
message="Already using `du -sch | awk 'NR <2' |awk '{ print $1 }'` KB"
echo $message | mail -s "File System Full Warning" email@address.com
fi
X содержит количество использованных килобайт, если оно больше 999000, оно отправляет предупреждение по электронной почте.
Я бы использовал awk
иметь дело только со второй строкой (пропустите первую здесь) и получите столбец:
$ df /dev/mapper/sil_acababdfabcf1 | awk 'NR==2 {print $4}'
11903752