So fahren Sie das Gastbetriebssystem in VirtualBox mithilfe der Befehlszeile sicher herunter

70

Ich habe Ubuntu 10.10 und benutze VirtualBox 3.2. Als Gastbetriebssystem habe ich ein anderes Ubuntu in der VirtualBox.

Ich starte Guest Ubuntu automatisch mit dem folgenden Befehl, sobald mein Host Ubuntu hochfährt:

VBoxHeadless -startvm Ubuntu --vrdp on

Dann kann ich mit ssh oder tsclient darauf zugreifen.

Jetzt muss ich Guest Ubuntu automatisch herunterfahren, sobald ich Host Ubuntu heruntergefahren habe. Kennt jemand eine sichere Methode, um Guest Ubuntu über eine Befehlszeile automatisch herunterzufahren? Ich habe zwei Möglichkeiten herausgefunden, wie man das Gastbetriebssystem herunterfahren kann, bin mir aber nicht sicher, ob sie sicher sind oder nicht. Hier sind sie:

VBoxManage controlvm Ubuntu acpipowerbutton

oder

VBoxManage controlvm Ubuntu poweroff
Bakhtiyor
quelle

Antworten:

57

Wenn Sie die Gnome-Energieverwaltungseinstellungen öffnen, können Sie festlegen, welche Aktionen ausgeführt werden sollen, wenn der Netzschalter gedrückt wird. Wenn Sie festlegen, dass es heruntergefahren werden soll, wird es ordnungsgemäß heruntergefahren, wenn Sie den virtuellen Ein- / Ausschalter mit dem VBoxManage controlvm Ubuntu acpipowerbutton Befehl drücken .

Egil
quelle
16

Verwenden Sie zum sicheren Herunterfahren von vm den folgenden Befehl:

vboxmanage controlvm Ubuntu poweroff soft
Menzer
quelle
9
Können Sie Ihre Quelle angeben? Ich kann anscheinend nichts zu dieser "weichen" Option in Kapitel 8 der VBox-Dokumentation finden.
rbaleksandar
5
Töte ahnungslose VMS seit 2013. Vielleicht diese Antwort entfernen? Jemand?
Entwurzelt
11

Wenn Sie die VM herunterfahren, während der Server dies tut, müssen Sie auf die VM warten.

(In diesem Shellscript ist 'root' der Aufrufer und 'theuser' der Eigentümer von 'thevm'.)

Ich weiß, dass die vms beendet sind, wenn die Ausgabe des Befehls VBoxManage list runningvmseine leere Zeichenfolge zurückgibt.

Ich benutze dies in meinem Shell-Skript

...
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
quelle
9

Mach das nicht:

VBoxManage controlvm Ubuntu poweroff

Dies entspricht dem Ziehen des Netzsteckers an einem echten Computer. Das willst du nicht!

Verwenden Sie die ACPI-Methode zum Herunterfahren (überprüfen Sie die Energieverwaltungseinstellung, wie von Egil vorgeschlagen) oder savestateprobieren Sie die Save State-Methode ( ) aus.

Drehmoment
quelle
1
sollte wohl das nicht machen setzen! Teil vor dem Befehl. Ich habe die ersten beiden Zeilen gelesen und den Befehl ausgeführt!
Nsane
1
@ nisargshah95 Darf ich Sie auf das von diesem Thread gegebene Beispiel verweisen . Lesen Sie immer zuerst alle Anweisungen und bemühen Sie sich, alle Befehle zu verstehen, bevor Sie sie ausführen. Besonders wahr unter Linux.
Samuel Harmer
2
Ich verstehe, aber im häufigsten Fall würde eine Person nach dem Lesen des Befehls schließen, dass es die Lösung ist (ohne weiter zu lesen)
nsane
Ich stimme @nsane zu - Ich habe eine Bearbeitung vorgeschlagen, damit dies anderen nicht passiert.
Adam K Dean
6

Sie sollten Ihr virtuelles Ubuntu genauso ausschalten wie Ihre reale Hardware. Aus einer Kommandozeile in einer SSH-Sitzung:

sudo poweroff

Wenn Sie den Rechnerstatus speichern möchten (ähnlich wie Suspend / Hibernate), verwenden Sie den zweiten Punkt in der Antwort von @ htorque .

Takkat
quelle
-4

Normalerweise schalte ich die VM (Linux) herunter, indem $ sudo shutdown -h now ich vermute, dass dies die sinnvollste Methode zum Beenden der VM ist, da sie heruntergefahren wird (nicht ausgeschaltet) und den angemeldeten Benutzern eine Wartezeit und (möglicherweise) eine Meldung bietet.

Woogon Chung
quelle
1
Die Frage bezieht sich auf das Herunterfahren des Gastbetriebssystems vom Host. Dies hätte nicht den beabsichtigten Effekt, wenn Sie es vom Host-Computer aus ausführen würden.
Dave