我使用的是嵌入式linux环境。我创建了一个启动 qt 应用程序的服务。
[Unit]
Description=AutoStart App
[Service]
Type=simple
ExecStartPre=/home/root/Clean_Application.sh
ExecStart=/home/root/Startup_Script.sh
WatchdogSecs=10min
NotifyAccess=all
Restart=always
StartLimitInterval=5min
StartLimitBurst=4
StartLimitAction=reboot-force
[Install]
WantedBy=multi-user.target
然后我尝试通过运行以下步骤来重置计时器。
export NOTIFY_SOCKET=/run/systemd/notify
systemd-notify READY=1
然后我MAINPID
使用systemctl status
命令获取,
设置MAINPID
withsystemd-notify MAINPID=$PID
并尝试通过运行重置计时器
systemd-notify WATCHDOG=1
我已经尝试了此设置的每种组合,但没有任何方法可以重置计时器。我尝试改变type=notify
和跑步systemd-notify "WATCHDOG=1"
,但似乎没有任何效果。
我该如何解决这个脚本的问题?
答案1
这样我就能够实现软件看门狗了。通过做这个。
#include <systemd/sd-daemon.h>
sd_notify(0,"READY=1"); //in my constructor
sd_notify(0,"WATCHDOG=1"); // in my timer every 10 seconds.