无人值守现场最棘手的情况是“屏幕还亮着但程序卡死”。这种情况下仅靠简单的断电恢复设置无法解决。
# /etc/systemd/system.conf
RuntimeWatchdogSec=30s
RebootWatchdogSec=10min
# 确认硬件看门狗设备
ls /dev/watchdog*
最简单有效的方法是设置 HTTP 健康检查端点,当没有响应时让 systemd 自动重启。
[Service]
Restart=always
RestartSec=5
WatchdogSec=60
# 应用必须发送 sd_notify(WATCHDOG=1)
如果频繁重启,就必须查明原因。看门狗是最后手段,并且必须留下日志,以便追踪停止的原因。