Qemu Systemd:服务不';t设置WatchdogSec选项后重新启动

Qemu Systemd:服务不';t设置WatchdogSec选项后重新启动,qemu,systemd,watchdog,Qemu,Systemd,Watchdog,我正在尝试使用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/

我正在尝试使用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”),以上是背景。我有两个问题:

  • 在我看来,这个服务应该在30秒后重新启动,为什么它一直运行直到我杀死或停止它
  • 当我手动终止qemu(我将qemu进程作为主进程)时,服务立即重新启动,无需等待
  • 除了这两个问题,如果对单位档案有任何错误或建议,请自由提出

    谢谢

    您需要设置

      NotifyAccess=1
    
    如果您不这样做,systemd将不会为您的服务启用看门狗功能

    systemd.service的手册页显示:

    WatchdogSec= 如果使用此选项,则应将NotifyAccess=(见下文)设置为打开对systemd提供的通知套接字的访问。如果NotifyAccess=未设置,它将隐式设置为main。默认值为0,这将禁用此功能。服务可以检查服务管理器是否需要监视器保持活动状态通知。有关详细信息,请参阅sd_看门狗启用(3)。sd_事件_设置_看门狗(3)可用于启用自动看门狗通知支持