Answers:
vboxmanage list vms
不(不再吗?)告诉虚拟机是否正在运行。它也列出了没有运行的。
vboxmanage showvminfo "your_vm_name" | grep -c "running (since"
如果正在运行,则返回1,否则返回0。
if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
vboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
vboxmanage list runningvms
如果要所有虚拟机的列表查看它们是否正在运行,请使用以下命令:
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 -v -e 'Host path:'
我相信您可以使用VBoxManage(VirtualBox的命令行界面)获得此信息。
您可以使用showvminfo命令显示有关特定虚拟机的信息。
这与VBoxManage列表vm显示给所有虚拟机的信息相同。
单独结合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
vboxmanage list runningvms