Сценарий Bash ждать завершения работы виртуальной машины Virtualbox?

Virtualbox имеет возможность выдавать команду работающей виртуальной машине:

vboxmanage controlvm NameOfRunningVM acpipowerbutton

однако эта команда возвращается немедленно, что приводит к некорректному завершению работы в моей ситуации.

ситуация: я планирую использовать это в /etc / init.д сценарий. Это позволит корректно завершить работу всех запущенных виртуальных машин. В настоящее время, когда я выдаю vboxmanage controlvm NameOfRunningVM acpipowerbutton команда завершение работы получает отсечение, потому что команда не ждет завершения работы виртуальной машины.

мне нужен сценарий Bash, который принимает в качестве входных данных имя машины Virtualbox и тайм-аут в секундах, затем ждет, пока виртуальная машина вернется в состояние "poweroff" или произойдет тайм-аут?

Я не уверен, что это лучший способ пойти об этом.


Я думал проверить состояние виртуальной машины с помощью следующей команды:

[user@machine ~]$ vboxmanage list runningvms
"VirtualMachineName" {65c93f1f-4508-4119-b07d-ce9e89b23b8e}

сценарий bash, возможно, опрашивает список запущенных виртуальных машин. Как только имя машины перестанет отображаться, виртуальная машина будет считаться завершенной.

29
задан Trevor Boyd Smith
16.03.2023 11:28 Количество просмотров материала 2449
Распечатать страницу

1 ответ

С помощью опроса это можно сделать так:

#!/bin/bash
MACHINE=
echo "Waiting for machine $MACHINE to poweroff..."

until $(VBoxManage showvminfo --machinereadable $MACHINE | grep -q ^VMState=.poweroff.)
do
  sleep 1
done
12
отвечен larstobi 2023-03-17 19:16

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх