ฉันจะรู้ได้อย่างไรว่าเครื่องเสมือนเกิดขึ้นจากบรรทัดคำสั่งหรือไม่


18

ฉันจะบอกได้อย่างไรจากบรรทัดคำสั่งหากเครื่องเสมือนเฉพาะทำงานและทำงานจากบรรทัดคำสั่ง


2
vboxmanage list runningvms
slm

คำตอบ:


12
vboxmanage list vms

ไม่ต้อง (อีกแล้ว?) จะบอกว่า vm กำลังทำงานอยู่หรือไม่ รายการยังไม่ทำงาน

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

จะส่งคืน 1 ถ้ามันกำลังทำงานหรือ 0 ถ้าไม่


นอกจากนี้ if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
x-yuri

บนการใช้งาน Windows vboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
phuclv

vboxmanage list runningvms
slm

6

ถ้าคุณต้องการรายการของ VMs ทั้งหมดเพื่อดูว่าพวกเขากำลังทำงานอยู่หรือไม่ใช้คำสั่งนี้:

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

นี่จะแสดงชื่อ VMs ในหนึ่งบรรทัดและสถานะในบรรทัดต่อไปนี้เช่นใน

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 อื่นเพื่อลบ: ... | grep -v -e 'Host path:'
Doug Thompson

3

คำสั่งนี้แสดงรายการของการรัน vms (ทดสอบบน Virtualbox 5.1)

VBoxManage list runningvms

หากต้องการทราบว่า vm กำลังทำงานอยู่คำสั่งนี้ควรทำงาน (ส่งคืน 1 ถ้ากำลังทำงาน 0 เป็นอย่างอื่น):

VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l

1

ฉันเชื่อว่าคุณสามารถใช้ข้อมูลนี้ได้ VBoxManage (อินเตอร์เฟสบรรทัดคำสั่งไปยัง VirtualBox)

คุณสามารถใช้ คำสั่ง showvminfo สำหรับแสดงข้อมูลเกี่ยวกับเครื่องเสมือนเฉพาะ

นี่เป็นข้อมูลเดียวกับ VBox จัดการรายการ vms จะแสดง   สำหรับเครื่องเสมือนทั้งหมด


1

รวม VBoxManage list runningvms กับ grep คนเดียว หากไม่มีสิ่งอื่นจะไม่เพียง แต่ให้คอนโซลเอาต์พุตเท่านั้น แต่ยังจะให้โค้ดส่งคืนที่จำเป็นสำหรับเชลล์สคริปต์ที่ต้องการอีกด้วย grep คำสั่งจะต้องมีเครื่องหมายคำพูดคู่ที่แน่นอนสำหรับ VM ในกรณีที่มีการระบุชื่อ vm: ตัวอย่าง:

$ 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.