Как автоматически перезапустить crond, если он не запущен?

Как автоматически перезапустить crond, если он не запущен?

Я использую 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

Конечно, этот простой пример работает только в том случае, если процесс службы и скрипт запуска службы имеют одно и то же имя. Но вы можете исправить это в соответствии со своими требованиями.

Связанный контент