问题描述
我有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中的第二个点。