gpt4 book ai didi

notify - 在服务中调用sd_notify(0, "WATCHDOG=1")

转载 作者:行者123 更新时间:2023-12-04 13:08:01 25 4
gpt4 key购买 nike

我有系统服务。我想为此实现一个看门狗。
就像

[Unit]
Description=Watchdog example service

[Service]
Type=notify
Environment=NOTIFY_SOCKET=/run/%p.sock
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm %p
ExecStart=/usr/libexec/sdnotify-proxy /run/%p.sock /usr/bin/docker run \
--env=NOTIFY_SOCKET=/run/%p.sock \
--name %p pranav93/test_watchdogged python hello.py
ExecStop=/usr/bin/docker stop %p

Restart=on-success
WatchdogSec=30s
RestartSec=30s


[Install]
WantedBy=multi-user.target

根据文档,我必须在指定间隔的每一半调用 sd_notify("watchdog=1")(在这种情况下为 15s)。但是我不知道如何在服务中调用该函数。帮助将不胜感激。

最佳答案

sd_notify(0,"WATCHDOG=1")是一个API,用于通知systemd您的进程运行正常。

由于已使用Type=notify,因此应在未启用服务的应用程序中调用sd_notify(0,"WATCHDOG=1"),并且必须定期进行调用(在30秒内,因为服务文件中提到WatchdogSec = 30s),这样systemd才能得到其他通知,

systemd会将其视为失败的服务,因此systemd将终止您的服务并重新启动它。

关于notify - 在服务中调用sd_notify(0, "WATCHDOG=1"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32947606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com