如何通过命令行启动和停止VirtualBox虚拟机

我在Ubuntu 16.04上安装了VirtualBox,作为主机和客户机。我需要通过SSH命令行来管理客户机(仅限启动和停止),但是没有找到任何可行的解决方案。

2https://www.virtualbox.org/manual/ch08.html#vboxmanage-startvm - user4556274
比我想的要容易。对不起,打扰了。有一些用于kvm的命令行工具。其中之一是"virsh"。要启动|停止虚拟机,只需使用:$ virsh start|shutdown <虚拟机名称>(可以通过$ virsh list --all列出)。您可以在bash脚本或crontab中使用此工具。再次感谢您的帮助。 - codolom
2个回答

这一切都可以在建立ssh连接后通过使用命令来完成:
1.列出您的虚拟机:
首先,用命令VBoxManage list vms列出可用的虚拟机,我以我的设置为例进行说明:
andrew@ilium~$ VBoxManage list vms
"Windows 8" {c4422acd-727b-45a0-9eef-65636bcde44d}
"Windows 10" {a8e262be-a032-4918-9085-63185318a979}
"Trusty Tahr Clean Copy" {c99bcf4b-9fea-4971-b190-425cb0b0cdeb}
"Xenial Xerus Clean Copy" {850122b9-c65f-425b-abb3-ffda68e159c6}
"Precise Pangolin Clean Copy" {169086e6-a3f4-42e7-8a89-63dcb273143f}
"Precise Pangolin Working Copy" {ff8312b6-cfae-4877-aa93-d71036d8882c}
"Xenial Xerus for MPlayer" {44902710-4368-4c06-9d24-3cb55328d31c}
"Xenial Xerus for vlc" {a62ad306-17d9-4ee3-8c1a-e4439c3b0e05}
"Xenial Xerus mingw64" {584d8513-6a16-49c7-b020-d657b93d5552}
"Trusty Tahr Working copy..." {433349e9-52eb-4066-bae7-623592871839}
"Xenial Xerus Working copy..." {dda23e74-cdb5-4c7d-8836-31be4129c02a}
andrew@ilium~$ 

注意:如果您不确定哪个虚拟机实际上正在运行,您可以使用VBoxManage list runningvms代替...
2. 启动虚拟机:
您需要的VBoxManage命令和选项来启动虚拟机是这些:
  startvm                   <uuid|vmname>...
                            [--type gui|sdl|headless|separate]

要在我的示例中启动“可靠的塔尔干净副本”虚拟机,你需要使用以下命令:
VBoxManage startvm "Trusty Tahr Clean Copy" --type gui

3. 停止虚拟机:

停止虚拟机,您可以再次使用VBoxManage,但这一次使用controlvm选项:

  controlvm                 <uuid|vmname>
                            pause|resume|reset|poweroff|savestate|

在我的例子中,关闭“可靠的塔尔干净副本”虚拟机的命令是:
VBoxManage controlvm "Trusty Tahr Clean Copy" savestate

这一切都应该在ssh上很好地运行,毕竟谁需要图形界面呢 :)

我在询问之前尝试过这些命令。 VBoxManage list vms|runningvms|anything else - 结果为空不可能。 虚拟机是在图形界面上创建的,并且它们正在运行。 这就是我寻求帮助的时刻。 - codolom
嗯...可能是ssh连接的问题。你是通过ssh从另一台计算机连接到主机电脑上吗?我推测你正在使用ssh命令行... - andrew.46
@codolom 很好奇,我通过ssh在自己的系统上测试了我的回答中的信息,结果完美无误。VBoxManage list vms会报错吗? - andrew.46
我不知道这应该是个问题。我尝试用这种方式修复它:http://stackoverflow.com/questions/5906441/how-to-ssh-to-a-virtualbox-guest-externally-through-a-host我讨厌这个文本框,按Ctrl+Enter就发送了:( - 抱歉漏掉了几行。我在控制台上执行了这个命令,但结果还是一样。 - codolom
没有错误。空输出。 - codolom
@codolom 你是通过ssh登录到你的Ubuntu主机系统,然后尝试在这个主机系统上打开和关闭虚拟机吗?你能够正常地在主机系统中导航,比如切换目录、运行命令等吗? - andrew.46
让我们在聊天中继续这个讨论 - codolom

优雅地关闭使用以下方法:
VBoxManage controlvm "Name" acpipowerbutton