ฉันจะบอกได้อย่างไรจากบรรทัดคำสั่งหากเครื่องเสมือนเฉพาะทำงานและทำงานจากบรรทัดคำสั่ง
ฉันจะบอกได้อย่างไรจากบรรทัดคำสั่งหากเครื่องเสมือนเฉพาะทำงานและทำงานจากบรรทัดคำสั่ง
คำตอบ:
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 ...
vboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
vboxmanage list runningvms
ถ้าคุณต้องการรายการของ 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 -v -e 'Host path:'
คำสั่งนี้แสดงรายการของการรัน vms (ทดสอบบน Virtualbox 5.1)
VBoxManage list runningvms
หากต้องการทราบว่า vm กำลังทำงานอยู่คำสั่งนี้ควรทำงาน (ส่งคืน 1 ถ้ากำลังทำงาน 0 เป็นอย่างอื่น):
VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
ฉันเชื่อว่าคุณสามารถใช้ข้อมูลนี้ได้ VBoxManage (อินเตอร์เฟสบรรทัดคำสั่งไปยัง VirtualBox)
คุณสามารถใช้ คำสั่ง showvminfo สำหรับแสดงข้อมูลเกี่ยวกับเครื่องเสมือนเฉพาะ
นี่เป็นข้อมูลเดียวกับ VBox จัดการรายการ vms จะแสดง สำหรับเครื่องเสมือนทั้งหมด
รวม 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
ราก @ yourshell # รายชื่อ vbox จัดการ vms
นอกจากนี้ดู เอกสารนี้.
vboxmanage list runningvms