process - systemd软件看门狗和 "normal"进程监控的区别

标签 process monitoring systemd watchdog

我已经尝试了 2 个 systemd 单元配置:

progA.service

[Service]
Type=simple
ExecStart=/opt/progA
WatchdogSec=10s

progB.service

[Service]
Type=simple
ExecStart=/opt/progB
Restart=always
RestartSec=10

2种情况下的效果差不多:每当程序kill/crash/exit时,10s后重新启动。据我了解,仅当需要监视程序内的特定线程/循环时,使用看门狗才有优势。我错过了什么吗?

最佳答案

是的,看门狗将检测高于和超出 Restart 指令的“事件”,后者仅检测“死亡”。

为了avoid being killed by the watchdog ,您的服务必须主动调用 sd_notify。想象一下,如果发生了一些并没有完全破坏您的服务的坏事,比如死锁。该进程不会被 Restart 指令终止,但它会无法发送 sd_notify 并且会被看门狗重新启动(只要检查正在发送死锁的同一个线程)。

关于process - systemd软件看门狗和 "normal"进程监控的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44624319/

相关文章:

Azure 虚拟机监控

rest - AWS 上有关 Web 服务运行状况的电子邮件警报

systemd - 如何将多行内容转换为 systemd 单元文件中的文件?

service - systemctl enable 有效,但 systemctl --user enable 无效

ubuntu - 不确定我如何将 Docker 网络问题解决到 pkg repos

c# - ProcessStartInfo.WorkingDirectory 属性为空

macos - 如何检查 OS X 终端中的进程?

c - 有多少个进程,具有 fork 功能?

c# - 如何获取特定进程中存在的所有实例?

Railo 上的 JavaMelody : no SQL statistics?