Làm thế nào tôi có thể biết từ dòng lệnh nếu một máy ảo cụ thể đang hoạt động và chạy từ dòng lệnh?
Làm thế nào tôi có thể biết từ dòng lệnh nếu một máy ảo cụ thể đang hoạt động và chạy từ dòng lệnh?
Câu trả lời:
vboxmanage list vms
Dos không (nữa?) Cho biết vm có chạy hay không. Nó liệt kê cũng không chạy.
vboxmanage showvminfo "your_vm_name" | grep -c "running (since"
Sẽ trả về 1 nếu nó chạy hoặc 0 nếu không.
if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
vboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
vboxmanage list runningvms
Nếu bạn muốn một danh sách tất cả các VM để xem chúng có đang chạy hay không sử dụng lệnh này:
vboxmanage list vms --long | grep -e "Name:" -e "State:"
Điều này sẽ hiển thị tên VM trong một dòng và trạng thái của nó trong dòng sau, chẳng hạn như trong
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:'
Lệnh này xuất ra danh sách các vms đang chạy (được thử nghiệm trên Virtualbox 5.1)
VBoxManage list runningvms
Để biết nếu một vm đang chạy, lệnh này sẽ thực hiện công việc (trả về 1 nếu đang chạy, 0 nếu không):
VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Tôi tin rằng bạn có thể lấy thông tin này bằng VBoxManage (giao diện dòng lệnh đến VirtualBox).
Bạn có thể sử dụng lệnh showvminfo để hiển thị thông tin về một máy ảo cụ thể.
Đây là thông tin giống như danh sách VBoxManage vms sẽ hiển thị cho tất cả các máy ảo.
Kết hợp VBoxManage list runningvms
với grep
một mình mà không có gì khác sẽ không chỉ cung cấp một đầu ra giao diện điều khiển, mà còn cung cấp mã trả về cần thiết cho nhu cầu kịch bản lệnh shell. Các grep
lệnh sẽ yêu cầu báo giá chính xác gấp đôi cho VM trong trường hợp một tên vm được cung cấp: Ví dụ:
$ VBoxManage list runningvms |grep '"demo_vm"'
$ echo $?
1
Cho một chạy
$ VBoxManage list runningvms |grep '"demo_vm_on"'
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
Trong câu trả lời khác, nơi sed
được sử dụng để loại bỏ dấu ngoặc kép hoặc nếu grep được thực hiện mà không có dấu ngoặc kép, dương tính giả sẽ được trả về. Trình diễn:
$ VBoxManage list runningvms |grep demo_vm
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
root @ yourshell # vboxmanage danh sách vms
Ngoài ra, xem tài liệu này.
vboxmanage list runningvms