Как я могу узнать, работает ли виртуальная машина из командной строки?

25

Как узнать из командной строки, запущена ли конкретная виртуальная машина и работает ли она из командной строки?

BenAlabaster
источник
4
vboxmanage list runningvms
SLM

Ответы:

17
vboxmanage list vms

Dos not (больше?) Говорит, работает ли vm или нет. Это список также не работает.

vboxmanage showvminfo "your_vm_name" | grep -c "running (since"

Возвращает 1, если он работает, или 0, если нет.

Константин Гуай
источник
2
Также,if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
x-yuri
на Windows использоватьvboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
phuclv
3
vboxmanage list runningvms
SLM
9

Если вы хотите получить список всех виртуальных машин, чтобы увидеть, работают они или нет, используйте эту команду:

vboxmanage list vms --long | grep -e "Name:" -e "State:"

Это покажет имя виртуальной машины в одной строке и ее статус в следующей строке, например, в

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, чтобы удалить это:... | grep -v -e 'Host path:'
Дуг Томпсон
Это также показывает PAUSED-машины, «list runningvms» считает, что запущенные машины работают, что может немного сбивать с толку ...
Сэмюэль Ослунд
5

Эта команда выводит список запущенных vms (проверено на Virtualbox 5.1)

VBoxManage list runningvms

Чтобы узнать, работает ли vm, эта команда должна выполнить задание (верните 1, если запущено, 0 в противном случае):

VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Денис Р.
источник
Приостановленная машина обнаруживается как работающая с «list runningvms», это может быть довольно запутанным при устранении неполадок!
Самуэль Ослунд
1

Я считаю, что вы можете получить эту информацию с помощью VBoxManage (интерфейс командной строки для VirtualBox).

Вы можете использовать команду showvminfo для отображения информации о конкретной виртуальной машине.

Это та же информация, что и список VBoxManage vms для всех виртуальных машин.

STDERR
источник
1

Объединение VBoxManage list runningvmsс grep одним без всего другого даст не только вывод консоли, но и код возврата, необходимый для сценариев оболочки. Команда grepпотребует точную двойную кавычку для виртуальной машины в случае, если указано имя виртуальной машины: пример:

$ 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
metatoaster
источник
0

root @ yourshell # vboxmanage список vms

Также смотрите этот документ.

Scandalist
источник
Этот ответ неверен. В соответствии с virtualbox.org/manual/ch08.html , вы можете получить зарегистрированные vms, но для OP нужны vms, которые уже запущены и работают.
Марио С