Назад | Перейти на главную страницу

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

Решено.

[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