我试图用systemd管理我的虚拟机。如果qemu崩溃,我想为服务实现看门狗,以下是单元文件。
[Unit]
Description=vm manager
After=network.target
Before=shutdown.target reboot.target poweroff.target halt.target
[Service]
Type=forking
ExecStart=/root/vm/vm-manager.sh start-vm
ExecStop=/root/vm/vm-manager.sh stop-vm
KillSignal=SIGCONT
PIDFile=/root/vm/run/pid
WatchdogSec=30s
Restart=on-failure
[Install]
WantedBy=multi-user.target
我没有在我的应用程序中调用sd_notify(0," WATCHDOG = 1"),上面是背景。我有两个问题:
除了这两个问题,如果对单位文件有任何不妥或建议,请自由提出。
谢谢!
答案 0 :(得分:0)
您需要设置
NotifyAccess=1
如果你不这样做,systemd将不会为你的服务启用看门狗功能。
systemd.service的手册页说:
<强> WatchdogSec = 强> 如果使用此选项,则应将NotifyAccess =(见下文)设置为打开对systemd提供的通知套接字的访问权限。如果未设置NotifyAccess =,则将隐式设置为main。默认为0,禁用此功能。该服务可以检查服务管理器是否期望看门狗保持活动通知。有关详细信息,请参阅sd_watchdog_enabled(3)。 sd_event_set_watchdog(3)可用于启用自动监视程序通知支持。