В процессе установки ПО для 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 придет сообщение
с логом запуска (если конечно почтовая подсистема настроена)
|