Як безпечно відключити гостьову ОС у VirtualBox за допомогою командного рядка


70

У мене є Ubuntu 10.10 і використовую VirtualBox 3.2. Як гостьова ОС у мене є ще один Ubuntu у VirtualBox.

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

VBoxHeadless -startvm Ubuntu --vrdp on

Тоді я можу отримати доступ до нього за допомогою ssh або tsclient.

Тепер мені потрібно автоматично відключити гостьовий Ubuntu, як тільки я відключую свій Host Ubuntu. Хтось знає якийсь безпечний метод автоматичного відключення Guest Ubuntu за допомогою командного рядка? Я з'ясував два способи відключення гостьової ОС, але я не впевнений, безпечні вони чи ні. Ось вони:

VBoxManage controlvm Ubuntu acpipowerbutton

або

VBoxManage controlvm Ubuntu poweroff

Відповіді:


57

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


16

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

vboxmanage controlvm Ubuntu poweroff soft

9
Чи можете ви надати своє джерело? Здається, я не в змозі знайти нічого про цю "м'яку" опцію в главі 8 документації на VBox.
rbaleksandar

5
Вбивство нічого не підозрюваного vms з 2013 року. Можливо, видаліть цю відповідь? Хтось?
Укорінено

11

Якщо ви відключаєте vm, коли сервер робить, вам доведеться чекати vm (s)

(У цьому шрифті оболонки «root» - це виклик, а «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
}
...

9

Не робіть цього:

VBoxManage controlvm Ubuntu poweroff

Це еквівалентно витягуванню шнура живлення на справжньому комп’ютері. Ви не хочете цього робити!

Використовуйте метод відключення ACPI (перевірте налаштування керування живленням, як пропонує Egil) або, можливо, savestateспробуйте метод збереження ( ).


1
Мабуть, мабуть , не роби цього! частина перед командою. Я прочитав перші два рядки і запустив команду!
nsane

1
@ nisargshah95 Чи можу я посилатись на приклад, наведений у цій темі . Завжди читайте всі вказівки спочатку і завжди докладайте зусиль, щоб зрозуміти будь-яку команду перед її виконанням. Особливо вірно в Linux.
Семюел Хармер

2
Я розумію, але в найпоширенішому випадку, прочитавши команду, людина зробить висновок, що це рішення (не читаючи далі)
nsane

Я погоджуюся @nsane - я запропонував редагувати так, щоб цього не сталося з іншими.
Адам К Дін

6

Ви повинні переоснастити свій віртуальний Ubuntu так само, як і ви реалізуєте реальне обладнання. Від коментованої лінії на ssh-сесії віддалено видайте:

sudo poweroff

Якщо ви хочете зберегти стан машини (подібний до призупинення / сплячки), використовуйте другий пункт у відповіді @ htorque .


-4

Я, як правило, вимикаю VM (Linux), $ sudo shutdown -h now мабуть, це найбільш вигідний спосіб припинення VM, оскільки це відключення (а не потужність) і забезпечує пільговий час та (можливо) повідомлення користувачам, які входять у систему.


1
Питання стосується вимкнення гостьової ОС від хоста. Це не матиме ... ер ... наміченого ефекту, якби ви запустили його з хост-машини.
Дейв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.