监控程序生命的最佳实践

Enr*_*sso 1 language-agnostic process-monitoring

我想听听你对程序生命监控的看法.

这就是场景.你有一个通常有效的简单程序,这意味着它写得很好,处理异常等等.

如果你想确保这个程序永远有效,你将如何运作?

没有像crontab这样的外部工具可用,但可以添加任何开销.

使用另一个持续"ping"主程序的程序?触摸文件并检查另一个程序进行文件修改?

你如何确保第二个程序始终有效?

所以,来吧,告诉我你在这方面的意见或最佳实践!

作为脚注,我将用Python编写这个程序,但这是一个通用的问题!

Pau*_*han 5

在嵌入式系统中,通常做的是看门狗模块.

监视程序检查某个位置(可能是文件,可能是内存位置,无论如何),如果位置不符合条件,则重新启动正在检查的系统.

所以你可能有你的程序在探测做的是定期写一些带有纪元戳的programname_watchdog文件.这将是常规循环的一部分.

那么你的看门狗(在完全不同的过程中)会检查文件.如果列出的日期已经过时,则其他程序将被终止并重新启动,因为它将被视为严重故障(挂起或崩溃).请注意,您的看门狗将具有一些简单的逻辑,因此失败的可能性要低得多.

我很肯定还有其他方法来实现这一目标.这只是一种方式.

编辑:您必须考虑系统构建的堆栈.您拥有的外部依赖项越多,失败的风险就越大.如果您正在寻找完美的操作,您还必须考虑程序正确性的正式证明.

这个问题真的成为了你对系统的期望; 什么样的失败是不可接受的,什么样的失败是预期的,所以你可以补偿它们.

这个问题很快成为证明 - 硬件 - 软件协同设计问题(也很昂贵).我很想知道你在做什么以及你的解决方案是什么.