Woran erkenne ich, ob eine virtuelle Maschine in der Befehlszeile aktiv ist?

25

Wie kann ich über die Befehlszeile feststellen, ob eine bestimmte virtuelle Maschine über die Befehlszeile ausgeführt wird?

BenAlabaster
quelle
4
vboxmanage list runningvms
Slm

Antworten:

17
vboxmanage list vms

DOS nicht (mehr?) Sagt, ob der VM läuft oder nicht. Es werden auch keine laufenden aufgelistet.

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

Will gibt 1 zurück, wenn es läuft, oder 0, wenn nicht.

Constantin Guay
quelle
2
Also,if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
X-Yuri
unter Windows verwendenvboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
phuclv
3
vboxmanage list runningvms
Slm
9

Wenn Sie eine Liste aller VMs anzeigen möchten, um zu sehen, ob sie ausgeführt werden oder nicht, verwenden Sie diesen Befehl:

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

Dies zeigt den Namen der VMs in einer Zeile und ihren Status in der folgenden Zeile wie in

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
quelle
Die Ausgabe enthält Informationen zu freigegebenen Ordnern, die Sie möglicherweise eingerichtet haben. Pipe zu einem anderen grep, um es zu entfernen:... | grep -v -e 'Host path:'
Doug Thompson
Dies zeigt auch PAUSED-Maschinen, "list runningvms" denkt, dass angehaltene Maschinen laufen, was ein wenig verwirrend sein kann ...
Samuel Åslund
5

Dieser Befehl gibt die Liste der laufenden vms aus (getestet auf Virtualbox 5.1)

VBoxManage list runningvms

Um zu wissen, ob eine VM ausgeführt wird, sollte dieser Befehl den Job ausführen (1 zurückgeben, wenn ausgeführt, 0 andernfalls):

VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Denis R.
quelle
Ein angehaltener Computer wird mit "list runningvms" angezeigt. Dies kann bei der Fehlerbehebung sehr verwirrend sein.
Samuel Åslund
1

Ich glaube, Sie können diese Informationen mit VBoxManage (Befehlszeilenschnittstelle zu VirtualBox) erhalten.

Mit dem Befehl showvminfo können Sie Informationen zu einer bestimmten virtuellen Maschine anzeigen .

Dies sind die gleichen Informationen wie bei VBoxManage list vms für alle virtuellen Maschinen werden.

stderr
quelle
1

Das Kombinieren VBoxManage list runningvmsmit grep alone ohne irgendetwas anderes ergibt nicht nur eine Konsolenausgabe, sondern liefert auch den Rückkehrcode, der für die Shell-Skriptanforderungen erforderlich ist. Dasgrep Befehl erfordert das genaue Anführungszeichen für die VM, wenn ein VM-Name angegeben wird: Beispiel:

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

Für einen Läufer

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

In der anderen Antwort, in sedder die doppelten Anführungszeichen entfernt wurden, oder wenn das grep ohne doppelte Anführungszeichen ausgeführt wurde, werden falsche Positive zurückgegeben. Demonstration:

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

root @ yourshell # vboxmanage list vms

Siehe auch dieses Dokument.

Skandalist
quelle
Diese Antwort ist falsch. Entsprechend virtualbox.org/manual/ch08.html können Sie die registrierten VMs erhalten, aber das OP benötigt die VMs, die aktiv sind.
Mario S