답변:
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
모든 VM 목록에서 VM이 실행 중인지 또는이 명령을 사용하지 않는지 확인하려면 다음을 수행하십시오.
vboxmanage list vms --long | grep -e "Name:" -e "State:"
그러면 VM 이름이 한 줄에 표시되고 다음과 같은 상태가 표시됩니다 (예 :
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 명령 을 사용 하여 특정 가상 머신에 대한 정보를 표시 할 수 있습니다 .
이것은 VBoxManage list 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
vboxmanage list runningvms