
Я использую cron job для мониторинга и перезапуска других служб, если они не запущены. Но как мониторить/перезапускать сам crond?
решение1
Вам понадобится либо система инициализации ( runit
, systemd
, и т. д.), которая может следить за процессом и (при соответствующей настройке) перезапускать демон после сбоя, либо запустить какой-либо другой демон, который проверяет, запущен ли процесс cron, и если нет, перезапускает его ( monit
, любое управление конфигурацией, которое запускает локальный агент, такой как CFEngine и т. д.).
решение2
Хорошо бы следить за наблюдателями с помощью скрипта-сторожа с бесконечным циклом и поместить его в /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
Конечно, этот простой пример работает только в том случае, если процесс службы и скрипт запуска службы имеют одно и то же имя. Но вы можете исправить это в соответствии со своими требованиями.