![Как автоматически перезапустить crond, если он не запущен?](https://rvso.com/image/1558015/%D0%9A%D0%B0%D0%BA%20%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C%20crond%2C%20%D0%B5%D1%81%D0%BB%D0%B8%20%D0%BE%D0%BD%20%D0%BD%D0%B5%20%D0%B7%D0%B0%D0%BF%D1%83%D1%89%D0%B5%D0%BD%3F.png)
Я использую 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
Конечно, этот простой пример работает только в том случае, если процесс службы и скрипт запуска службы имеют одно и то же имя. Но вы можете исправить это в соответствии со своими требованиями.