[an error occurred while processing this directive]

Автоматический перезапуск служб во FreeBSD
В процессе установки ПО для FreeBSD "правильные" службы автоматически прописывают скрипт запуска 
в /usr/local/etc/rc.d и управление его поведением определяется в /etc/rc.conf 

Однако случается так что успешно запустившись при включении сервера, служба по
ряду причин падает позже
в процессе работы (такое случается например c dovecot или squid). В результате чего как минимум 
требуется перезапуск с последующим анализом причин поведения. Про анализ причин
поведения отдельная песня,
а вот перезапускать в таких редких случаях ручками может получиться с изрядными задержками, 
пока не выяснится, что что-то перестало работать.

На этот счет я практикую запуск через cron команды которая проверяет все
сконфигурированные к запуску
скрипты /usr/local/etc/rc.d на предмет поддержки команды status и если эта команда возвращает 
отрицательный результат (т.е. сервис не активен) то заново запускает его. 

Итого в файле /var/cron/tabs/root значится строка 

   */5 * * * * /usr/bin/find /usr/local/etc/rc.d/ -type file | xargs -I$ sh -c "($  2>&1 | grep -q -v status) \
      && exit ; ($ status > /dev/null) && exit ; $ start"

В итоге, если служба остановилась, она будет перезапущена в течении 5 минут, и
на root придет сообщение
с логом запуска (если конечно почтовая подсистема настроена)
 
04.06.2009 , Автор: Алексей Волков
Ключи: freebsd, cron, monitoring, service / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / FreeBSD специфика / Установка и апгрейд FreeBSD и приложений.

[an error occurred while processing this directive]

[an error occurred while processing this directive]