系统看门狗

系统看门狗

有什么方法可以在运行时向 systemd 看门狗注册应用程序吗?我的意思是不要使用 systemd 单元文件,例如通过 systemd API

Linux 看门狗仅用于系统重置?可以用于应用程序重置吗?

答案1

Systemd 的看门狗主要用于 3 种不同的操作:

  • 硬件重置(利用 /dev/watchdog 中公开的 CPU 硬件看门狗)。这是通过RuntimeWatchdogSec=以下选项启用的/etc/systemd/system.conf
  • 应用程序重置,只要 systemd 单元定义中预见到这一点
  • 系统重置是应对多次应用程序重置失败的后备措施。在 systemd 单元中也有定义

示例单元文件:

[Unit]
Description=My Little Daemon
Documentation=man:mylittled(8)

[Service]
ExecStart=/usr/bin/mylittled
WatchdogSec=30s
Restart=on-failure
StartLimitInterval=5min
StartLimitBurst=4
StartLimitAction=reboot-force

该示例摘自:http://0pointer.de/blog/projects/watchdog.html,它非常完整地概述了您可以使用看门狗服务的内容和方式。

答案2

Linux 看门狗守护进程应该用于系统重置作业,尽管它也可以针对持久错误运行“修复二进制文件”,用于修复或重新启动进程。一般来说,要监视守护进程并重新启动它们,您应该使用已经回答的 init/upstart/systemd 支持的方法,并针对最严重的“只有重新启动才能解决问题”的情况保留看门狗操作。

答案3

您的问题中有多个问题或期望。

系统看门狗

当谈到 Linux 服务看门狗时,它的目的是检测系统(操作系统、Linux)问题(损坏、冻结……),它的工作方式如下:

  1. 有一个特殊的服务(最好是由硬件支持)基本上是“告诉”:“一切都好,我还活着!”
  2. 它不断地、定期地告诉它
  3. 有一个观察者(最好是硬件),如果在比预期时间更长的时间内没有得到通知,它将决定系统变得无响应,并将重新启动系统(通过软件或硬件重新启动)
  4. 希望如果是一次特定的冻结并重新启动,系统会恢复
  5. 如果出现严重错误,系统将再次触发看门狗,系统将重复重新启动

应用看门狗

另一方面,人们对观察应用程序/服务的健康状况感兴趣。

  1. 例如,您可能想确定应用程序是否终止,您是否希望重新启动它(为此,您应该将其作为服务启动,最好通过systemd机制)或者
  2. 如果您想确保应用程序没有被冻结,您需要一个外部看门狗服务,您的应用程序将向该服务报告“一切都好,我还活着”。这些应用程序支持的看门狗之一是监控

相关内容