我使用 cron 任务来监控和重启其他未运行的服务。但是如何监控/重启 crond 本身呢?
答案1
您要么需要一个 init 系统(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
当然,这个简单的例子只有当服务进程和服务启动脚本共享同一个名称时才有效。但你可以修复它以满足你的要求