Bagaimana saya bisa tahu jika mesin virtual naik dari baris perintah?

25

Bagaimana saya bisa tahu dari baris perintah jika mesin virtual tertentu sudah aktif dan berjalan dari baris perintah?

BenAlabaster
sumber
4
vboxmanage list runningvms
slm

Jawaban:

17
vboxmanage list vms

Dos not (again?) Memberi tahu apakah vm sedang berjalan atau tidak. Daftarnya juga tidak berjalan.

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

Akan mengembalikan 1 jika sedang berjalan, atau 0 jika tidak.

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

Jika Anda ingin daftar semua VM untuk melihat apakah mereka berjalan atau tidak menggunakan perintah ini:

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

Ini akan menampilkan nama VMs dalam satu baris dan statusnya di baris berikut seperti pada

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
sumber
Output dari ini termasuk info pada folder bersama yang mungkin Anda atur. Pipa ke grep lain untuk menghapusnya:... | grep -v -e 'Host path:'
Doug Thompson
Ini juga menunjukkan mesin PAUSED, "list runningvms" berpikir bahwa mesin yang dijeda sedang berjalan yang dapat sedikit membingungkan ...
Samuel Åslund
5

Perintah ini menampilkan daftar menjalankan vms (diuji pada Virtualbox 5.1)

VBoxManage list runningvms

Untuk mengetahui apakah vm sedang berjalan, perintah ini harus melakukan pekerjaan (mengembalikan 1 jika berjalan, 0 sebaliknya):

VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Denis R.
sumber
Mesin yang dijeda muncul berjalan dengan "list runningvms" ini bisa agak membingungkan ketika pemecahan masalah!
Samuel Åslund
1

Saya percaya Anda bisa mendapatkan informasi ini menggunakan VBoxManage (antarmuka baris perintah ke VirtualBox).

Anda dapat menggunakan perintah showvminfo untuk menampilkan informasi tentang mesin virtual tertentu.

Ini adalah informasi yang sama dengan daftar VBoxManage yang akan ditampilkan untuk semua mesin virtual.

stderr
sumber
1

Menggabungkan VBoxManage list runningvmsdengan grep sendirian tanpa hal lain tidak hanya akan memberikan output konsol, tetapi juga akan memberikan kode pengembalian yang diperlukan untuk kebutuhan skrip shell. The grepperintah akan memerlukan kutipan yang tepat ganda untuk VM dalam kasus di mana nama vm disediakan: Contoh:

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

Untuk yang sedang berjalan

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

Di jawaban lain di mana seddigunakan untuk menghilangkan tanda kutip ganda, atau jika grep dilakukan tanpa tanda kutip ganda, positif palsu akan dikembalikan. Demonstrasi:

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

root @ yourshell # vboxmanage daftar vms

Juga, lihat dokumen ini.

Skandal
sumber
Jawaban ini salah. Sesuai dengan virtualbox.org/manual/ch08.html , Anda bisa mendapatkan vms yang terdaftar , tetapi OP membutuhkan vms yang sudah aktif dan berjalan.
Mario S