Làm thế nào tôi có thể biết nếu một máy ảo đang lên từ dòng lệnh?


25

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?


4
vboxmanage list runningvms
slm

Câu trả lời:


17
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.


2
Ngoài ra,if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
x-yuri

trên Windows sử dụngvboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
phuclv

3
vboxmanage list runningvms
slm

9

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)

Đầu ra từ này bao gồm thông tin về bất kỳ thư mục chia sẻ nào bạn có thể đã thiết lập. Chuyển sang một grep khác để loại bỏ nó:... | grep -v -e 'Host path:'
Doug Thompson

Điều này cũng cho thấy các máy PAUSED, "danh sách đang chạy" nghĩ rằng các máy bị tạm dừng đang chạy có thể hơi khó hiểu ...
Samuel Åslund

5

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

Một máy bị tạm dừng hiển thị là đang chạy với "danh sách đang chạy", điều này có thể khá khó hiểu khi khắc phục sự cố!
Samuel Åslund

1

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.


1

Kết hợp VBoxManage list runningvmsvớ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 greplệ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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.