Home

【VMware ESXi】ESXi中使用命令行强行关闭虚拟机进程

当虚拟机因为资源限制、任务卡死或进程异常,导致无法通过 vCenter 正常关机时,可以直接在 ESXi 主机命令行里强行关闭相关虚拟机进程。

适用场景

例如有客户误把 CPU 资源限制设置为 0,结果虚拟机完全无法操作,也不能正常关机。这类情况下,通常就需要转到 ESXi Shell 处理。

方式一:直接查找并杀死 vmx 进程

先开启 Troubleshooting Options,使用 Alt + F1 登录本地控制台,或者通过 SSH 登录 ESXi。

ps | grep vmx | more

如果已经知道虚拟机名称,也可以直接按名称过滤。找到目标进程后执行:

kill -9 pid

方式二:通过 vim-cmd 操作虚拟机

先获取所有虚拟机信息:

vim-cmd vmsvc/getallvms

然后根据 vmid 执行关闭、开机、重启或查询状态:

vim-cmd vmsvc/power.off vimid #关闭虚拟机
vim-cmd vmsvc/power.on vimid #打开虚拟机
vim-cmd vmsvc/power.reset vimid #重启虚拟机
vim-cmd vmsvc/power.getstate vimid #获取虚拟机状态

方式三:通过 esxcli 处理

查看正在运行的虚拟机进程信息:

esxcli vm process list #获取正在运行的虚拟机信息

然后根据 world-id 执行关闭:

esxcli vm process kill --type=hard --world-id=id

常见模式包括:

  • soft
  • hard
  • force

补充说明

  • 一般建议按 soft -> hard -> force 的顺序逐级尝试。
  • 强制关闭后,最好排查导致虚拟机卡死的根因,而不是只停留在“关掉了”这一步。
  • 执行 kill 后可能不会瞬间结束,等待一段时间再刷新状态即可。
VMware LVM