我已经尝试了2个系统单元配置:
progA.service
[Service]
Type=simple
ExecStart=/opt/progA
WatchdogSec=10s
progB.service
[Service]
Type=simple
ExecStart=/opt/progB
Restart=always
RestartSec=10
2种情况下的效果相似:每当程序终止/崩溃/退出时,它会在10秒后重新启动。据我了解,只有在需要监视程序内部的特定线程/循环时,使用watchdog才有优势。我错过了什么吗?
答案 0 :(得分:0)
是的,看门狗会发现"活跃"超出Restart
指令,只检测"死亡"。
要avoid being killed by the watchdog,您的服务必须主动拨打sd_notify
。想象一下,如果发生了不好的事情,并没有完全扼杀你的服务,就像死锁一样。该进程不会被Restart
指令终止,但它将无法发送sd_notify
并且将由监视程序重新启动(只要在死锁的同一线程上发送检查) )。