¿Cómo puedo saber si una máquina virtual está activa desde la línea de comandos?

25

¿Cómo puedo saber desde la línea de comandos si una máquina virtual específica está en funcionamiento desde la línea de comandos?

BenAlabastro
fuente
44
vboxmanage list runningvms
slm

Respuestas:

17
vboxmanage list vms

Dos no (¿ya?) Dice si la vm se está ejecutando o no. También enumera los que no se ejecutan.

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

Will devuelve 1 si se está ejecutando, o 0 si no.

Constantin Guay
fuente
2
Además,if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
x-yuri
en uso de Windowsvboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
phuclv
3
vboxmanage list runningvms
slm
9

Si desea una lista de todas las máquinas virtuales para ver si se están ejecutando o no, use este comando:

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

Esto mostrará el nombre de la máquina virtual en una línea y su estado en la siguiente línea, como en

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)
Jörn
fuente
El resultado de esto incluye información sobre cualquier carpeta compartida que pueda haber configurado. Tubería a otro grep para eliminarlo:... | grep -v -e 'Host path:'
Doug Thompson
Esto también muestra máquinas PAUSADAS, "list runningvms" piensa que las máquinas pausadas están funcionando, lo que puede ser un poco confuso ...
Samuel Åslund
5

Este comando genera la lista de vms en ejecución (probado en Virtualbox 5.1)

VBoxManage list runningvms

Para saber si se está ejecutando un vm, este comando debe hacer el trabajo (devolver 1 si se está ejecutando, 0 de lo contrario):

VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Denis R.
fuente
Una máquina pausada aparece como "list runningvms", ¡esto puede ser bastante confuso al resolver problemas!
Samuel Åslund
1

Creo que puede obtener esta información utilizando VBoxManage (interfaz de línea de comandos para VirtualBox).

Puede usar el comando showvminfo para mostrar información sobre una máquina virtual en particular.

Esta es la misma información que VBoxManage list vms mostraría para todas las máquinas virtuales.

stderr
fuente
1

La combinación VBoxManage list runningvmscon grep solo sin nada más no solo dará una salida de consola, sino que también proporcionará el código de retorno requerido para las necesidades de scripting de shell. El grepcomando requerirá la comilla doble exacta para la VM en el caso de que se proporcione un nombre de VM: ejemplo:

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

Para uno corriendo

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

En la otra respuesta, donde sedse utilizó para eliminar las comillas dobles, o si el grep se realizó sin las comillas dobles, se devolverán falsos positivos. Demostración:

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