6

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

vboxmanage controlvm NameOfRunningVM acpipowerbutton

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

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

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

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


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

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

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

1 ответ1

13

Используя опрос, это можно сделать так:

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

until $(VBoxManage showvminfo --machinereadable $MACHINE | grep -q ^VMState=.poweroff.)
do
  sleep 1
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .