其实我正在使用导师监控某个进程,并在进程因某种原因停止时重新启动它。问题是,如果主管崩溃,进程就会停止监控。
所以我想安排一个 cronjob 来检查主管是否正在运行,并最终重新启动它。
我接下来考虑的是摆脱主管并直接从 cronjob 检查我的进程。我读到有时主管会使用过多的内存(但有待验证)。
使用 Supervisor 和 cronjob 监控进程的优点是什么?
答案1
Cron 定期调用 shell 脚本来确保服务正在运行,这实际上是在简单网络上进行服务监控的一种相当不错的入门级方法。Cron 每分钟可以检查一次,因此如果可以接受停机时间小于 60 秒,那么这可能足以满足您的环境需求。它易于设置和使用。
另一方面,Supervisor 可以处理来自内核的有关服务进程的实时信号。这比简单的 cron 脚本响应时间短得多。使用 Cron 监控您的 Supervisord 服务也并不困难,并且可以提供良好的第二道防线。
如果您需要确保服务正常运行并在极短的时间内做出响应,且不会因单点故障而导致任何服务中断,那么使用多服务器服务故障转移检测和更强大的监控解决方案可能更好。所有这些都需要更复杂的网络安排以及更多的规划和维护投资。
答案2
在我的所有系统上,我都有一个 cron 文件夹(定期同步)。crontab 设置一个脚本,每 5 分钟运行一次,其中有我制定的在哪个服务器上运行什么以及何时运行的规则(例如,在我的个人服务器上,它每周查询一次我的 FB,以获取我和朋友的音乐喜好,或检查电影/电视喜好并将其与我的 Netflix 队列进行比较,或者更专业地每 5 分钟检查一次公司上传文件夹,看看是否有要分析的数据)。
值得记住的是,根据进程或其他脚本命令,如果 cron 脚本无法正常退出或耗时超过正常时间,您可以让其运行多次。因此,当您使用脚本 cron 路线时,请记住先检查它是否已在运行,并可能终止旧进程或等待其完成。
答案3
Cron 不能每分钟启动一次以上的检查。