当我启动“重启”或“关机”时,systemd 会终止所有进程,但我需要它等待一个特定的应用程序完成后再停止其他服务。
实际上,我想要 Virtualbox vm clean shutdown/savestate。使用此服务文件手动执行此操作没有问题,但在关机期间 - 进程被终止。我该如何控制它?
我已阅读过文档,但没有找到针对这种依赖关系的明确解决方案。
[Unit]
Description=virtualbox vm1 vm control service
After=vboxweb-service.service
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/usr/bin/VBoxManage startvm vm1 -type vrdp
ExecStop=/usr/bin/VBoxManage controlvm vm1 savestate
RemainAfterExit=true
答案1
解决了。
[Unit]
Description=virtualbox windows vm control service
After=vboxweb-service.service
Before=shutdown.target reboot.target halt.target
[Service]
Type=oneshot
ExecStart=/usr/bin/VBoxManage startvm windows -type vrdp
ExecStop=/usr/bin/VBoxManage controlvm windows savestate
RemainAfterExit=true
KillMode=none
[Install]
WantedBy=multi-user.target