systemd 等待命令完成后再重启/关闭或终止其他进程

systemd 等待命令完成后再重启/关闭或终止其他进程

当我启动“重启”或“关机”时,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

相关内容