Как безопасно закрыть гостевую ОС в VirtualBox с помощью командной строки

47

У меня Ubuntu 10.10 и с использованием VirtualBox 3.2. В качестве гостевой ОС у меня есть другой Ubuntu в VirtualBox.

Я запускаю Guest Ubuntu автоматически, используя следующую команду после загрузки моего хоста Ubuntu:

VBoxHeadless -startvm Ubuntu --vrdp on

Затем я могу получить доступ к нему с помощью ssh или tsclient.

Теперь мне нужно автоматически выключить гостевой Ubuntu, как только я выключу свой Host Ubuntu. Кто-нибудь знает какой-либо безопасный метод автоматического отключения гостевой Ubuntu с помощью командной строки? Я обнаружил два способа отключения гостевой ОС, но я не уверен, безопасны они или нет. Вот они:

VBoxManage controlvm Ubuntu acpipowerbutton

или

VBoxManage controlvm Ubuntu poweroff
    
задан Bakhtiyor 13.05.2011 в 13:58
источник

6 ответов

41

Если вы откроете настройки управления питанием Gnome, вы можете установить, какие действия предпринять при нажатии кнопки питания. Если вы отключите его, он будет отключен изящно, когда вы нажмете кнопку виртуального питания с помощью команды VBoxManage controlvm Ubuntu acpipowerbutton .

    
ответ дан Egil 13.05.2011 в 14:14
источник
15

Для безопасного отключения vm используйте эту команду:

vboxmanage controlvm Ubuntu poweroff soft
    
ответ дан menzer 08.11.2013 в 22:38
8

Если вы завершаете vm, когда сервер делает это, вам придется ждать vm (s)

(В этом shellscript «root» является invoker, а «theuser» является владельцем «thevm»)

Я знаю, что vms закончили, когда вывод команды VBoxManage list runningvms возвращает пустую строку.

Я использую это в своем сценарии оболочки

...
stop(){
    su -c "VBoxManage controlvm thevm acpipowerbutton" -s /bin/bash theuser
    while [ "'su -c 'VBoxManage list runningvms' -s /bin/bash theuser'" != "" ]
    do
        echo waiting for VMs to shutdown
        sleep 3
    done
}
...
    
ответ дан Jorge Sanchez 15.11.2013 в 17:16
8

Не делайте этого:

VBoxManage controlvm Ubuntu poweroff

Это эквивалентно вытягиванию вилки питания на реальном компьютере. Вы не хотите этого делать!

Использовать метод отключения ACPI (проверьте настройки управления питанием, как предлагает Egil) или, возможно, попробуйте метод сохранения состояния ( savestate ).

    
ответ дан htorque 13.05.2011 в 14:21
6

Вы должны отключить свой виртуальный Ubuntu так же, как и вы отключите свое реальное оборудование. Из раздела communline на сеансе ssh удаленно:

sudo poweroff

Если вы хотите сохранить состояние машины (аналогично suspend / hibernate), используйте вторую точку в Ответ @ htorque .

    
ответ дан Takkat 13.05.2011 в 14:36
-1

Я обычно выключаю VM (Linux) на %код% Я думаю, что это самый изящный способ прекращения работы виртуальной машины, поскольку он отключается (не отключается) и обеспечивает время отклика и (возможно) сообщение пользователям входа.

    
ответ дан Woogon Chung 23.02.2017 в 13:09