Systemd:服务没有设置WatchdogSec选项重启

时间:2015-12-04 09:16:36

标签: 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/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"),上面是背景。我有两个问题:

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

    谢谢!

1 个答案:

答案 0 :(得分:0)

您需要设置

  NotifyAccess=1

如果你不这样做,systemd将不会为你的服务启用看门狗功能。

systemd.service的手册页说:

<强> WatchdogSec =     如果使用此选项,则应将NotifyAccess =(见下文)设置为打开对systemd提供的通知套接字的访问权限。如果未设置NotifyAccess =,则将隐式设置为main。默认为0,禁用此功能。该服务可以检查服务管理器是否期望看门狗保持活动通知。有关详细信息,请参阅sd_watchdog_enabled(3)。 sd_event_set_watchdog(3)可用于启用自动监视程序通知支持。