Существует несколько вопросов и ответов на 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
вывод, или иначе в целом получить доступ к этому значению.
Если Вы находитесь на 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).
, Как отмечено Drew Noakes , эта способность была добавлена в GNU coreutils
8.21, и так не доступна в более старых версиях Ubuntu.
Для выбора полей, awk
намного лучший инструмент, чем cut
, и можно основываться на ответе Jan's для этого после выбора полей, которые Вы хотите 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, содержит число используемого КБ, если больше, чем 999 000 это посылает предупреждающее сообщение по электронной почте.
Я бы использовал awk
, чтобы иметь дело только со второй строкой (здесь пропущена первая) и получил бы ваш столбец:
$ df /dev/mapper/sil_acababdfabcf1 | awk 'NR==2 {print $4}'
11903752