сценарий оболочки для выхода из сценария, если дисковое пространство больше 75 - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу, чтобы скрипт вышел из сценария, если дисковое пространство превышает пороговое значение (например, 75%).Попытка ниже вещей, но не повезло.

df -kh | awk '{if( 0+$5 >= 75 ) exit;}'

Попытка команды выше, не работает.Может ли кто-нибудь помочь мне в этом.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Если вы используете это в скрипте для выхода из скрипта (в отличие от выхода из длинного скрипта awk), то вам нужно вызвать exit из внешнего скрипта:

if df -kh | awk  '{if ($5+0 > 75) exit 1 }'; then echo OK; else echo NOT; fi

Не забывайте, что df возвращает одну строку на точку монтирования, вы можете сделать:

if dk -kh /home ....

для проверки конкретной точки монтирования.

0 голосов
/ 13 ноября 2018

Это потому, что ваш df вывод НЕ идет одной строкой или около того, чтобы сделать это, вам нужно добавить опцию -P, попробуйте выполнить один раз.

df -hP  | awk '{if( 0+$5 >= 75 ){print "exiting now..";exit 1}}'

ИЛИ

df -hP | awk '$5+0>=75{print "exiting now..";exit 1}'

ИЛИ с именем монтера, который является виновником нарушения порога.

df -hP | awk '$5+0>=75{print "Mount " $1 " has crossed threshold so exiting now..";exit 1}' 

Если у вас нет -Pзатем введите следующее.

df -k | awk '/^ +/ && $4+0>=75{print "Mount " prev"  has crossed threshold so exiting now..";exit 1} !/^ +/{prev=$0}'

Я использую оператор print, чтобы убедиться, что exit работает.Кроме того, опция -P была протестирована в системах BASH.

Поскольку OP сказал, что ему нужно выйти из самого скрипта полностью, поэтому я запросил OP добавить следующий код вне цикла for его кода. (У меня нетхотя проверил, но это должно работать)

if [[ $? -eq 1 ]]
then
    echo "Exiting the complete script now..."
    exit
else
    echo "Looks good so going further in script now.."
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...