Я использую cron job для мониторинга и перезапуска других сервисов, если они не работают. Но как контролировать / перезапускать сам crond?
2 ответа
Вам потребуется либо система инициализации (runit
, systemd
и т.д.), Которая может следить за процессом и (при соответствующей конфигурации) перезапустить демон после сбоя, либо запустить какой-либо другой демон, который проверяет, запущен ли процесс cron и, если не перезапускает его (monit
, любое управление конфигурацией, которое запускает локальный агент, такой как CFEngine и т. д.).
Хорошо наблюдать за наблюдателями с помощью сторожевого сценария с бесконечным циклом и помещать его в /etc/rc.local или аналогичный файл запуска.
#!/bin/bash
for service in crond httpd whatever
do
if [ `pgrep $service` = '' ]
then
service $service restart
# OR
# systemctl restart service
fi
sleep 3
done
Конечно, этот простой пример работает только в том случае, если процесс и сценарий запуска службы имеют одинаковое имя. но вы можете исправить это, чтобы соответствовать вашим требованиям