回答:
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のリストで実行中かどうかを確認するには、次のコマンドを使用します。
vboxmanage list vms --long | grep -e "Name:" -e "State:"
これにより、1行に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コマンドを使用できます。
これは、vmsがすべての仮想マシンに対して表示するVBoxManageリストと同じ情報です。
何もせず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