Проверьте ли меньше, чем некоторое количество свободного пространства на диске из командной строки

Существует несколько вопросов и ответов на 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вывод, или иначе в целом получить доступ к этому значению.

1
задан 29 October 2014 в 00:54

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).

, Как отмечено Drew Noakes , эта способность была добавлена в GNU coreutils 8.21, и так не доступна в более старых версиях Ubuntu.

Для выбора полей, awk намного лучший инструмент, чем cut, и можно основываться на ответе Jan's для этого после выбора полей, которые Вы хотите df произвести.

1
ответ дан 10 November 2019 в 18:22

Просто реализованный, что это не то, относительно чего попросили, это показывает предупреждение, если использованное пространство больше, чем предопределенный порог. Я оставлю его для дальнейшей ссылки все же.

Вы могли использовать что-то как сценарий ниже

#!/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 это посылает предупреждающее сообщение по электронной почте.

2
ответ дан 10 November 2019 в 18:22

Я бы использовал awk, чтобы иметь дело только со второй строкой (здесь пропущена первая) и получил бы ваш столбец:

$ df /dev/mapper/sil_acababdfabcf1 | awk 'NR==2 {print $4}'
11903752
2
ответ дан 10 November 2019 в 18:22

Другие вопросы по тегам:

Похожие вопросы: