Автоматический перезапуск служб во FreeBSD

Опубликовано admin в Ср, 16/03/2011 - 15:18
В процессе установки ПО для 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 придет сообщение
с логом запуска (если конечно почтовая подсистема настроена)
Источник: http://www.opennet.ru/tips/2086_freebsd_cron_monitoring_service.shtml
( categories: )