Как выполнить команду awk с помощью команды «df -Pm» для получения имен файловых систем, которые используют более 90% файловой системы?

Спасибо за ваше внимание. Ответ дал хороший ночной сон. Сценарий работал нормально как root, но не работал как apcupsd - указывая на проблему с разрешениями (как предполагает Джефф), но на самом деле проблема заключалась в создании apcupsd файла email.txt в /, а не в исходном каталоге / apcupsd. Без файла перенаправления и добавления и т. Д. Не удались. Простым решением было использовать абсолютные пути - тупой! Я мог бы найти ответ раньше, если бы я не использовал версии сценария успешно в другом месте, отсюда и мой ошибочный анализ.

Я пробовал отладку с помощью set -x, но, конечно же, bash не давал сбоев, так что никаких ошибок - просто никакого результата. В любом случае все исправлено, поэтому спасибо за ваше время.

1
30.08.2011, 18:13
3 ответа

Не могли бы вы дать нам пример вывода из df -Pm ? Я уверен, что у большинства из нас не используется 100% дискового пространства;)

я только что проверил, взломав мой вывод df и вашу часть awk вроде нормально.

$ cat /tmp/1 | awk '+$5 >= 90 {print}'
tmpfs                        1978         1      1978     101% /dev/shm
tmpfs                        1978         1      1977     100% /run
2
29.04.2021, 00:58

Я предполагаю, что проблема заключается в знаке процента, который, вероятно, превращает> = в сравнение строк. Прибавьте 0 к 5 долларам перед выполнением сравнения, таким образом вы принудительно интерпретируете 5 долларов как число:

df -P | awk '0 + $5 >= 90 { print }'
0
29.04.2021, 00:58

Я предлагаю несколько альтернативный подход. Немного математики никому не повредит.

df -Pml | tail -n +2 | awk '{if ($4/$2 < 0.1) print $1,"is getting full."}'

Это вычислит, свободна ли файловая система менее чем на 10% (именно так это отображает df, даже если столбец помечен как «Используется», а -l печатает только локальные файловые системы). При добавлении tail -n +2 заголовок пропускается.

0
29.04.2021, 00:58

Теги

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