如何从命令行确定虚拟机是否启动?


Answers:


17
vboxmanage list vms

不(不再吗?)告诉虚拟机是否正在运行。它也列出了没有运行的。

vboxmanage showvminfo "your_vm_name" | grep -c "running (since"

如果正在运行,则返回1,否则返回0。


2
此外,if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
x-yuri

在Windows上使用vboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
phuclv

3
vboxmanage list runningvms
slm

9

如果要所有虚拟机的列表查看它们是否正在运行,请使用以下命令:

vboxmanage list vms --long | grep -e "Name:" -e "State:"

这将在一行中显示VM名称,并在下一行中显示其状态,例如

Name:            windows10pro
State:           running (since 2017-06-09T09:16:46.593000000)
Name:            ubuntu16LTS
State:           powered off (since 2017-02-09T19:11:33.000000000)
Name:            zammad
State:           running (since 2017-06-09T09:08:13.871000000)

此输出包括您可能已设置的任何共享文件夹的信息。用管道输送到另一个grep以将其删除:... | grep -v -e 'Host path:'
Doug Thompson

这也显示了PAUSED机器,“ list runningvms”认为暂停的机器正在运行,这可能会有些混乱...
SamuelÅslund

5

此命令输出正在运行的虚拟机的列表(在Virtualbox 5.1上测试)

VBoxManage list runningvms

要知道虚拟机是否正在运行,此命令应该执行此工作(如果正在运行,则返回1,否则返回0):

VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l

暂停的计算机显示为正在运行“列表runningvms”,这在进行故障排除时可能会造成混乱!
塞缪尔·奥斯隆德

1

我相信您可以使用VBoxManage(VirtualBox的命令行界面)获得此信息。

您可以使用showvminfo命令显示有关特定虚拟机的信息。

这与VBoxManage列表vm显示给所有虚拟机的信息相同。


1

单独结合VBoxManage list runningvms使用将不但提供控制台输出,而且还将提供满足shell脚本需求的返回代码。在提供虚拟机名称的情况下,该命令将要求虚拟机使用精确的双引号:例如:grep grep

$ VBoxManage list runningvms |grep '"demo_vm"'
$ echo $?
1

对于跑步的

$ VBoxManage list runningvms |grep '"demo_vm_on"'
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0

在另一个sed用于消除双引号的答案中,或者如果grep在没有双引号的情况下执行,则将返回误报。示范:

$ VBoxManage list runningvms |grep demo_vm
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.