Jak mogę sprawdzić, czy maszyna wirtualna jest uruchomiona z wiersza poleceń?

25

Jak mogę stwierdzić z wiersza poleceń, czy konkretna maszyna wirtualna jest uruchomiona i działa z wiersza polecenia?

BenAlabaster
źródło
4
vboxmanage list runningvms
slm

Odpowiedzi:

17
vboxmanage list vms

Dos not (już?) Informuje, czy vm działa, czy nie. Lista również nie działa.

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

Zwraca 1, jeśli jest uruchomiony, lub 0, jeśli nie.

Constantin Guay
źródło
2
Ponadto,if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
x-yuri
w systemie Windowsvboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
phuclv
3
vboxmanage list runningvms
slm
9

Jeśli chcesz zobaczyć listę wszystkich maszyn wirtualnych, aby zobaczyć, czy są uruchomione, czy nie, użyj tego polecenia:

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

Spowoduje to wyświetlenie nazwy maszyn wirtualnych w jednym wierszu i jej statusu w następnym wierszu, na przykład w

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
źródło
Dane wyjściowe z tego obejmują informacje o dowolnych skonfigurowanych folderach udostępnionych. Pipuj do innego grepa, aby go usunąć:... | grep -v -e 'Host path:'
Doug Thompson
Pokazuje to także PAUZOWANE maszyny, „lista runningvms” uważa, że ​​działają zatrzymane maszyny, co może być trochę mylące ...
Samuel Åslund,
5

To polecenie wyświetla listę uruchomionych vms (testowane na Virtualbox 5.1)

VBoxManage list runningvms

Aby wiedzieć, czy vm jest uruchomione, to polecenie powinno wykonać zadanie (zwróć 1, jeśli działa, 0 w przeciwnym razie):

VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Denis R.
źródło
Zatrzymana maszyna wyświetla się jako „z uruchomioną listą”, co może być dość mylące podczas rozwiązywania problemów!
Samuel Åslund,
1

Wierzę, że możesz uzyskać te informacje za pomocą VBoxManage (interfejs wiersza poleceń VirtualBox).

Możesz użyć polecenia showvminfo do wyświetlenia informacji o konkretnej maszynie wirtualnej.

Są to te same informacje, które pokazywałaby lista vms VBoxManage dla wszystkich maszyn wirtualnych.

stderr
źródło
1

Łączenie VBoxManage list runningvmsz grep samemu bez niczego innego nie tylko da wyjście konsoli, ale także zapewni kod powrotu wymagany do potrzeb skryptów powłoki. grepKomenda będzie wymagało dokładnego podwójny cudzysłów dla maszyny wirtualnej w przypadku gdy nazwa VM jest usługa: przykład:

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

Dla działającego

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

W drugiej odpowiedzi, w której sedużyto eliminacji podwójnych cudzysłowów, lub jeśli grep został wykonany bez podwójnych cudzysłowów, zwrócone zostaną fałszywe alarmy. Demonstracja:

$ VBoxManage list runningvms |grep demo_vm
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
metatoaster
źródło
0

root @ yourshell # vboxmanage list vms

Zobacz także ten dokument.

Skandalist
źródło
Ta odpowiedź jest zła. Zgodnie z virtualbox.org/manual/ch08.html możesz pobrać zarejestrowane vms, ale OP potrzebuje vms, które są uruchomione.
Mario S