Tre*_*ith 6 virtualbox bash virtual-machine init-script sysvinit
Virtualbox 能够向正在运行的虚拟机发出命令:
vboxmanage controlvm NameOfRunningVM acpipowerbutton
Run Code Online (Sandbox Code Playgroud)
但是,此命令会立即返回,这会导致我的情况无法正常关闭。
情况:我计划在 /etc/init.d 脚本中使用它。这将允许正常关闭所有正在运行的 VM。目前,当我发出vboxmanage controlvm NameOfRunningVM acpipowerbutton命令时,关闭会被切断,因为该命令不会等待 VM 关闭。
我需要一个 Bash 脚本,它将 Virtualbox 机器的名称和超时(以秒为单位)作为输入,然后等待 VM 返回到“关机”状态或超时发生?
我不确定这样做的最佳方法是什么。
我正在考虑使用以下命令检查 VM 的状态:
[user@machine ~]$ vboxmanage list runningvms
"VirtualMachineName" {65c93f1f-4508-4119-b07d-ce9e89b23b8e}
Run Code Online (Sandbox Code Playgroud)
bash 脚本可能会轮询正在运行的虚拟机列表。一旦机器名称停止列出,VM 将被视为已完成。
小智 14
使用轮询,可以这样完成:
#!/bin/bash
MACHINE=$1
echo "Waiting for machine $MACHINE to poweroff..."
until $(VBoxManage showvminfo --machinereadable $MACHINE | grep -q ^VMState=.poweroff.)
do
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9224 次 |
| 最近记录: |