当前位置: 首页>>技术教程>>正文


如何使用命令行安全地关闭VirtualBox中的Guest OS

, ,

问题描述

我有Ubuntu 10.10并使用VirtualBox 3.2。作为Guest OS,我在VirtualBox中有另一个Ubuntu。

我的Host Ubuntu启动后,我使用以下命令自动启动Guest Ubuntu:

VBoxHeadless -startvm Ubuntu --vrdp on

然后我可以使用ssh或tsclient访问它。

现在我需要在关闭主机Ubuntu后自动关闭Guest Ubuntu。有没有人知道使用命令行自动关闭Guest Ubuntu的任何安全方法?我发现有两种方法可以关闭Guest OS,但我不确定它们是否安全。他们是:

VBoxManage controlvm Ubuntu acpipowerbutton

要么

VBoxManage controlvm Ubuntu poweroff

最佳解决办法

如果打开Gnome Power管理首选项,则可以设置电源按钮时要执行的操作。如果将其设置为关闭,则在使用VBoxManage controlvm Ubuntu acpipowerbutton
命令按下虚拟电源按钮时,它将正常关闭。

次佳解决办法

要安全关闭vm,请使用以下命令:

vboxmanage controlvm Ubuntu poweroff soft

第三种解决办法

如果你在服务器关闭vm时,你必须等待vm(s)

(在此shellcript中’root’是调用者,’theuser’是’thevm’的所有者)

我知道当命令VBoxManage list runningvms的输出返回空字符串时,vms已完成。

我在我的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
}
...

第四种办法

不要这样做:

VBoxManage controlvm Ubuntu poweroff

它相当于在真正的计算机上拔电源插头。你不想这样做!

使用ACPI关闭方法(检查像Egil建议的电源管理设置)或者尝试使用保存状态方法(savestate)。

第五种办法

您应该像关闭真实硬件一样关闭虚拟Ubuntu。从ssh会话上的commanline远程发出:

sudo poweroff

如果要保存机器状态(类似于suspend /hibernate),请使用@htorque’s answer中的第二个点。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1595.html,未经允许,请勿转载。