我运行的是 ubuntu 14.04 LTS 和 watchdog 5.13。我的目标是实现以下目标:
- 每 30 秒运行一次外部检查脚本
- 如果脚本在 300 秒内失败则重新启动(例如连续 10 次尝试失败)
我对最基本的看门狗配置存在问题:
$ cat /etc/watchdog.conf
watchdog-device = /dev/watchdog
watchdog-timeout = 300
interval = 30
test-binary = /usr/local/sbin/watchdog_check.sh
realtime = yes
priority = 1
$ cat /etc/default/watchdog
run_watchdog=1
run_wd_keepalive=1
watchdog_module="none"
watchdog_options="-c /etc/watchdog.conf --verbose"
根据系统日志,
watchdog-timeout
被设置为 254 秒(已讨论这里)。- 第一次发生故障后系统重新启动
test-binary
。
这是预期的行为还是我遗漏了什么?
PS 此刻我已经在脚本本身中实现了“等待直到 10 次失败”的逻辑。
答案1
我无法说明为何watchdog-timeout
要将时间限制在 254 秒,但您链接的内容确实解释了这一点。
不过,看门狗定时器通常不会以“连续 N 次故障”模式运行。在第一次出现错误迹象时,它们会重新启动机器,因此您看到的行为是我所期望的。通常,它们在硬件中实现,需要在配置的时间段内进行“触发”,否则它将在没有任何警告的情况下对机器进行硬电源循环。这是为了尝试从内核恐慌等中解救出来。