在 KVM 主机上,我有一些带有不监听 ACPI 关闭事件的旧版操作系统的虚拟机。就像在 Debian 9.5 主机上发生的那样,关闭libvirt-guests.service
时每个此类 VM 等待 5 分钟,然后将其销毁。
为了避免这种情况并干净地关闭它们,我创建了自定义 VM 关闭服务,其中包含使用特殊方法关闭它们的脚本:
% cat /etc/systemd/system/multi-user.target.wants/vm_stop.service
[Unit]
Description=vm_shutdown
Before=libvirt-guests.service
[Service]
ExecStart=/bin/true
ExecStop=/usr/local/bin/vm_shutdown_all.sh
[Install]
WantedBy=multi-user.target
但是,在 libvirt-guests.service
关闭时,尽管Before=
上述服务中进行了设置,但该服务似乎仍在运行。
现在,我测试了自定义服务确实在关机时运行 - 它touch
是一个测试文件,我可以在其中验证它。
问题:我如何确保它在之前运行libvirt-guests.service
?
该
Before=
声明涉及服务的启动。从man systemd.unit
.所以你想配置你的服务,
After=libvirt-guests.service
因为服务在启动之后libvirt-guests.service
启动,你的服务在停止之前libvirt-guests.service
停止。