服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-23 简米科技 3,769 字 9 分钟阅读

虚拟机结束指令有哪些?如何正确使用?,虚拟机退出命令怎么用?

导读虚拟机结束指令主要分为正常关机、强制结束和重启三大类,常用命令包括Linux系统的shutdown、poweroff、halt,Windows的shutdown /s,以及虚拟化平台提供的vmrun stop、virsh shutdown、VBoxManage controlvm等,正确使用需先判断虚拟机是哪种……

虚拟机结束指令主要分为正常关机、强制结束和重启三大类,常用命令包括Linux系统的shutdown、poweroff、halt,Windows的shutdown /s,以及虚拟化平台提供的vmrun stop、virsh shutdown、VBoxManage controlvm等,正确使用需先判断虚拟机是哪种平台、客机操作系统是否响应,再选择对应指令。

虚拟机结束指令有哪些?三大类先分清

结束虚拟机不只是“关电源”这么简单,行业内按操作方式分成三类:优雅关闭、强制终止、挂起恢复,每一类对应的命令和风险等级都不同。

优雅关闭:让系统先走完收尾流程

优雅关闭会向虚拟机发送关机信号(ACPI或Power Button),模拟按下物理电源键,系统会先停止服务、卸载文件系统、写入缓存,然后才断电,这种方式最安全,适合生产环境。

对应常用命令:

  • KVM/QEMU:virsh shutdown <虚拟机名称>,执行后向客户机发送ACPI关机信号。
  • VMware Workstation/Fusion:vmrun -T ws stop "<虚拟机文件路径>",默认使用柔和关机。
  • VirtualBox:VBoxManage controlvm <虚拟机名称> acpipowerbutton,模拟电源键。
  • Hyper-V:PowerShell执行Stop-VM -Name <虚拟机名称>,如果客户机支持,会触发正常关机。

强制终止:系统卡死时的最后手段

强制结束相当于直接拔掉电源线,命令会立即终止虚拟机进程,不经过客户机内部系统,只建议在虚拟机完全无响应、优雅关闭超时后使用。

常用命令:

  • KVM:virsh destroy <虚拟机名称>,强制销毁域。
  • VMware:vmrun -T ws stop "<路径>" hard,加hard参数强制断电。
  • VirtualBox:VBoxManage controlvm <虚拟机名称> poweroff,硬断电。
  • 通用宿主机层面:找到虚拟机对应的进程ID,执行kill -9 <PID>,比如VMware Workstation的进程名是vmware-vmx,KVM进程通常是qemu-system-x86_64。

挂起与恢复:不是结束,但常被误当成关机

挂起会把虚拟机当前内存状态保存到宿主机硬盘,然后停止CPU运行,恢复时从快照状态继续,不经过完整启动流程,挂起不等于关机,它占用的磁盘空间很大,而且如果宿主机异常断电,挂起文件可能损坏,命令:

  • VMware:vmrun suspend "<路径>"
  • VirtualBox:VBoxManage controlvm <虚拟机名称> savestate
  • KVM:virsh managedsave <虚拟机名称>

如何正确使用虚拟机结束指令?五步操作指南

很多人直接在宿主机执行kill -9,结果虚拟机里的数据库文件损坏,正确用法应该按“由内到外、由软到硬”的顺序执行。

第一步:先尝试在虚拟机内部执行正常关机

如果虚拟机还能操作,登录系统后用原生命令关机最稳妥。

  • Linux:执行shutdown -h now或poweroff,等待进程结束。
  • Windows:shutdown /s /t 0,立刻关机。
  • 重启:Linux用reboot,Windows用shutdown /r /t 0。

第二步:等待默认超时时间,不要急着强制

宿主机平台对ACPI关机信号有一个等待窗口,例如virsh shutdown默认等待30秒,超时后才会认为关机失败,如果虚拟机内有大量数据正在落盘,适当延长等待时间,比如virsh shutdown --timeout 60(部分版本支持)。

第三步:通过虚拟化平台API关闭,避免直接kill

如果内部关机失败,优先使用平台提供的停止命令,这些命令会额外执行一些清理动作,比如保存各类状态信息,以VMware为例:

  • 软关闭:vmrun -T ws stop "C:\VMs\web.vmx"
  • 强制关闭:vmrun -T ws stop "C:\VMs\web.vmx" hard

KVM平台则先试virsh shutdown,再试virsh destroy,行业共识认为,直接对进程执行kill应当作为最后手段,因为平台无法了解当时客户机的状态。

第四步:确认状态已经从进程列表消失

关闭后别急着关闭宿主机,执行virsh list --all查看状态是否为shut off,VMware用vmrun list确认没有运行的虚拟机,Hyper-V用Get-VM查看State是否为Off,这一步能避免因虚拟机进程残留导致后续资源占用或启动冲突。

第五步:处理挂起文件与锁文件

如果用了强制结束,可能会留下.lock文件或挂起态.vmem文件,下次启动前需要清理这些残留,例如VirtualBox的强制断电后,会出现.vbox目录下的锁,需要删除MachineLocked文件,KVM强制destroy后,检查/var/lib/libvirt/qemu/下是否有残留的pid文件。

虚拟机重启命令怎么用?区分两个层面的重启

重启并不是“关机+开机”的简单组合,对虚拟机来说,有两种重启方式:

  • 系统内部重启:Linux执行reboot,Windows执行shutdown /r,系统完整地关闭再启动,安全但耗时较长。
  • 平台层重启:KVM执行virsh reboot <虚拟机名称>,VMware调用vmrun reset,这个操作相当于告诉系统开始重启,但如果客户机不响应,部分平台会直接硬重启。

生产环境建议优先使用系统内部重启,如果必须从外部发起,先发送ACPI重启信号,而不是直接执行virsh reset。virsh reset相当于按复位键,会丢失未保存数据。

常见误区:为什么你的虚拟机结束指令不生效

虚拟机里装的Windows没装ACPI驱动

KVM的virsh shutdown依赖客户机的ACPI支持,Linux默认安装了ACPI驱动,但某些精简版Windows镜像、Windows Server Core可能缺少对应组件,导致信号发不进去,此时需要改用virsh destroy或登录系统执行内部关机命令。

自定义启动参数屏蔽了电源管理

虚拟机配置中如果加过acpi=no或noapic内核参数,ACPI事件会被屏蔽,检查/etc/default/grub中的GRUB_CMDLINE_LINUX,移除相关参数后重启虚拟机再试。

VirtualBox的“关闭”按钮不是关机

VirtualBox窗口右上角关闭按钮默认是保存状态(挂起),不是关机,如果选了“发送关机信号”,才会触发ACPI,很多人点完按钮后以为虚拟机已关闭,实际只是把内存存到了硬盘上,继续占用磁盘空间。

在宿主机关机时直接选“关掉虚拟机”

某些虚拟化软件在宿主机系统关机时会询问“是否强制关闭虚拟机”,此时如果选择强制关闭,相当于执行了硬断电,建议先把所有虚拟机优雅关闭,再关宿主机。

虚拟机结束指令相关问答:高频问题一次说清

问:虚拟机挂起和关机到底有什么区别?

挂起保存内存状态并停止运行,恢复后系统时间会从挂起点继续,占用磁盘空间(通常等于虚拟机内存大小),关机则是完整走完系统停止流程,不保留运行时状态,内存被完全释放,需要长期停用时应该选择关机,临时待机才用挂起。

问:virsh destroy和virsh shutdown有什么不同?

virsh shutdown发送ACPI关机信号,让客户机自己执行正常关机流程,安全但依赖客机响应。virsh destroy由宿主机强制终止虚拟机进程,不经过客户机内部操作,可能丢失未写入磁盘的数据,对不同故障级别的场景,建议先shutdown,确认无法正常关机后再执行destory。

问:虚拟机一直卡在正在关机界面,怎么强制结束?

先尝试Ctrl+Alt+Del进入恢复界面,等待三分钟,仍无响应再使用宿主机平台命令强制结束,KVM执行virsh destroy <名称>,VMware执行vmrun -T ws stop "<路径>" hard,强制后检查是否需要删除锁文件,下次启动前建议做一次文件系统修复,Linux客户机出现多年常见的内核bug导致无法关机时,也可以从宿主机执行virsh crash或virsh destroy,但代价是可能产生fsck磁盘检查。

结束指令是所有虚拟机运维的基础操作,但并不是只记住一两条命令就能应付所有场景,先判断客户机状态,再选择内部命令、平台命令、最后才是进程级kill,是业内公认的安全顺序,日常使用中多测试几套环境的关机流程,否则真到故障发生时,手边没有一条可靠指令。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱