【发布时间】:2013-03-02 18:49:10
【问题描述】:
我删除了包含 .vagrant 文件的目录。当我启动一个新虚拟机时,它抱怨端口正在使用中。那么如何在没有 .vagrant 文件的情况下销毁 VM?
【问题讨论】:
-
一个共享的问题是一个问题减半:做了完全相同的愚蠢问题,再次感谢 SO 立即解决......
我删除了包含 .vagrant 文件的目录。当我启动一个新虚拟机时,它抱怨端口正在使用中。那么如何在没有 .vagrant 文件的情况下销毁 VM?
【问题讨论】:
以下 VirtualBox 命令可能会有所帮助。如果 poweroff 不起作用,请尝试 unregistervm。
$ VBoxManage list runningvms
$ VBoxManage controlvm <uuid> poweroff
$ VBoxManage unregistervm <uuid>
Shell 脚本停止所有正在运行的虚拟机:
VBoxManage list runningvms | awk '{print $2;}' | xargs -I vmid VBoxManage controlvm vmid poweroff
【讨论】:
vagrant global-status --prune。见stackoverflow.com/a/24446866/300836
VBoxManage list vms; VBoxManage discardstate <uuid>; VBoxManage unregistervm <uuid>
vboxmanage unregistervm --delete 像vagrant destroy 一样物理删除VM
最简单的做法是启动 VirtualBox 的 GUI 客户端并移除(可能在关闭后)虚拟机。您只需右键单击虚拟机并执行这些操作。
【讨论】:
alias killvms="VBoxManage list runningvms | awk '{print \$2;}' | xargs -I vmid VBoxManage controlvm vmid poweroff" 您只需要键入 killvms 而不是启动并等待 GUI。
如果您使用 GUI 删除了 VM,但仍然出现错误,您可以尝试从“%userprofile%\VirtualBox VMs”中删除指定的 VM。这对我有用
【讨论】:
以下 bash 函数将关闭并销毁与当前用户的所有 VM 相关的所有文件:
function killvms() {
VBoxManage list runningvms | awk '{print $2;}' | xargs -I vmid VBoxManage controlvm vmid poweroff
VBoxManage list vms | awk '{print $2;}' | xargs -I vmid VBoxManage unregistervm --delete vmid
}
将它添加到您的~/.bash_aliases 并通过killvms 在您的shell 中调用它。
【讨论】: