11 мая 2013 г., 14:02 пользователь Dmitry A. Zhiglov <
dmitry.zhig...@gmail.com> написал:

> Доброго времени суток,
>
> Есть работающий slapd, который надо время от времени перезагружать.
> Написан скрипт, который выполняет следущее:
>
> 1) выполняет "/etc/init.d/slapd stop"
> 2) в цикле проверяет "остановился ли slapd?"
>
^^^^^^^^^^^^

А это точно нужно?

Не будет ли более правильным что-то типа такого:

try_stop=`/etc/init.d/slapd stop`
stop_status=$?

и далее анализировать статус остановки


3) если НЕ остановился, то проверить через 1 минуту
> 4) если Остановился, то выполнить задачу
> 5) если НЕ остановился спустя 20 попыток - отправить алерт
>
> Бывает, что "/etc/init.d/slapd stop" завершается с ошибкой. Ошибка,
> как правило, результат до-о-олгого завершения самого slapd, спустя ~5
> минут сервис останавливается корректно, но init.d уже не работает...
>
> Самое печальное в этом алгоритме, что когда завершается с ошибкой
> "/etc/init.d/slapd stop" то и мой скрипт так же завершается с ошибкой
> и алгоритм завершается на шаге No.2
>
> Вопрос: как корректно и правильней перехватить ошибку от init.d
> скрипта, что бы не остановился мой скрипт (на bash), а шаг No.5 отправил
> уведомление?
>
> С уважением,
> Дима
>

Ответить