Como desligar com segurança o SO convidado no VirtualBox usando a linha de comando

70

Eu tenho o Ubuntu 10.10 e usando o VirtualBox 3.2. Como SO convidado, tenho outro Ubuntu no VirtualBox.

Estou iniciando o Guest Ubuntu automaticamente usando o seguinte comando quando o meu Host Ubuntu inicializar:

VBoxHeadless -startvm Ubuntu --vrdp on

Então eu posso acessá-lo com ssh ou tsclient.

Agora eu preciso desligar automaticamente o Guest Ubuntu quando eu desligar o meu Host Ubuntu. Alguém conhece algum método seguro para desligar automaticamente o Guest Ubuntu com uma linha de comando? Descobri duas maneiras de desligar o SO convidado, mas não tenho certeza se elas são seguras ou não. Aqui estão eles:

VBoxManage controlvm Ubuntu acpipowerbutton

ou

VBoxManage controlvm Ubuntu poweroff
Bakhtiyor
fonte

Respostas:

57

Se você abrir as preferências de gerenciamento do Gnome Power, poderá definir quais ações executar quando o botão liga / desliga. Se você configurá-lo para desligar, ele será desligado normalmente quando você pressionar o botão liga / desliga virtual com o VBoxManage controlvm Ubuntu acpipowerbutton comando

Egil
fonte
16

Para desligar com segurança o vm, use este comando:

vboxmanage controlvm Ubuntu poweroff soft
menzer
fonte
9
Você pode fornecer sua fonte? Parece que não consigo encontrar nada sobre essa opção "flexível" no capítulo 8 da documentação do VBox.
Rbaleksandar
5
Matando vms desavisados ​​desde 2013. Talvez remova esta resposta? Qualquer um?
Desarraigado
11

Se você estiver desligando o vm quando o servidor o fizer, precisará aguardar o (s) vm (s)

(Neste shellscript, 'root' é o invocador e 'theuser' é o proprietário de 'thevm')

Eu sei que o vms terminou quando a saída do comando VBoxManage list runningvmsretorna uma string vazia.

Eu uso isso no meu script de shell

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

Não faça isso:

VBoxManage controlvm Ubuntu poweroff

É equivalente a puxar o plugue de energia de um computador real. Você não quer fazer isso!

Use o método de desligamento da ACPI (verifique a configuração de gerenciamento de energia como sugere Egil) ou talvez savestateexperimente o método de salvar estado ( ).

htorque
fonte
11
provavelmente deve colocar o não faça isso! parte antes do comando. Eu li as duas primeiras linhas e executei o comando!
Nsane
11
@ nisargshah95 Gostaria de referir o exemplo dado por esta discussão . Leia sempre todas as instruções primeiro e faça um esforço para entender qualquer comando antes de executá-lo. Especialmente verdade no Linux.
Samuel Harmer
2
Eu entendo, mas no caso mais comum, depois de ler o comando, uma pessoa iria inferir que é a solução (sem ler qualquer outra)
nSane
Concordo @nsane - sugeri uma edição para que isso não aconteça com outras pessoas.
Adam K Dean
6

Você deve desligar o Ubuntu virtual, assim como o hardware real. De uma linha comercial em uma sessão ssh remotamente:

sudo poweroff

Se você deseja salvar o estado da máquina (semelhante a suspender / hibernar), use o segundo ponto na resposta do @ htorque .

Takkat
fonte
-4

Normalmente, eu desligo a VM (Linux) $ sudo shutdown -h now porque acho que é a maneira mais fácil de finalizar a VM porque ela é desligada (não é desligada) e fornece tempo de cortesia e (possivelmente) a mensagem para os usuários de logon.

Woogon Chung
fonte
11
A questão está relacionada ao desligamento do sistema operacional convidado do host. Isso não teria o efeito desejado, se você o executasse na máquina host.
21717 Dave