Спасибо за ваше внимание. Ответ дал хороший ночной сон. Сценарий работал нормально как root, но не работал как apcupsd - указывая на проблему с разрешениями (как предполагает Джефф), но на самом деле проблема заключалась в создании apcupsd файла email.txt в /, а не в исходном каталоге / apcupsd. Без файла перенаправления и добавления и т. Д. Не удались. Простым решением было использовать абсолютные пути - тупой! Я мог бы найти ответ раньше, если бы я не использовал версии сценария успешно в другом месте, отсюда и мой ошибочный анализ.
Я пробовал отладку с помощью set -x, но, конечно же, bash не давал сбоев, так что никаких ошибок - просто никакого результата. В любом случае все исправлено, поэтому спасибо за ваше время.
Не могли бы вы дать нам пример вывода из 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
Я предполагаю, что проблема заключается в знаке процента, который, вероятно, превращает> = в сравнение строк. Прибавьте 0 к 5 долларам перед выполнением сравнения, таким образом вы принудительно интерпретируете 5 долларов как число:
df -P | awk '0 + $5 >= 90 { print }'
Я предлагаю несколько альтернативный подход. Немного математики никому не повредит.
df -Pml | tail -n +2 | awk '{if ($4/$2 < 0.1) print $1,"is getting full."}'
Это вычислит, свободна ли файловая система менее чем на 10% (именно так это отображает df, даже если столбец помечен как «Используется», а -l
печатает только локальные файловые системы). При добавлении tail -n +2
заголовок пропускается.