菜鸟科技网

命令行打开虚拟机

在命令行环境中打开和管理虚拟机是许多系统管理员和开发人员日常工作中的一项重要技能,尤其对于需要批量操作或自动化运维的场景来说,命令行工具提供了比图形界面更高的效率和灵活性,不同的虚拟化平台(如 VMware、VirtualBox、KVM 等)都有其对应的命令行工具,下面将以主流的 VMware Workstation/Player 和 VirtualBox 为例,详细介绍如何通过命令行打开虚拟机,并涵盖相关的配置、常见问题及高级技巧。

命令行打开虚拟机-图1
(图片来源网络,侵删)

VMware 虚拟机的命令行管理

VMware 提供了两种主要的命令行工具:vmrun(适用于 VMware Workstation/Player)和 govc(适用于 VMware vSphere,也可用于本地管理),对于普通用户,vmrun 是最常用的选择。

安装与配置 vmrun

  • Windows 系统:vmrun 通常位于 VMware 安装目录的 vmware vmware workstation 文件夹中(如 C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe),建议将该路径添加到系统环境变量 PATH 中,以便直接调用。
  • Linux 系统:如果通过包管理器安装 VMware Workstation(如 sudo apt install vmware-workstation),vmrun 通常会自动安装到 `/usr/bin/ 目录下。

基本命令:启动虚拟机

假设虚拟机文件(.vmx 文件)位于 /path/to/vm/my_vm.vmx,启动命令如下:

vmrun -T ws start "/path/to/vm/my_vm.vmx"  # -T ws 表示 VMware Workstation 类型

参数说明:

  • -T:指定 VMware 产品类型,可选值包括 ws(Workstation)、player(VMware Player)、esx(vSphere ESXi)等。
  • start:操作命令,表示启动虚拟机,其他常用操作还包括 stop(停止)、suspend(挂起)、reset(重启)等。
  • 路径:虚拟机配置文件的绝对路径或相对路径。

后台运行与 GUI 控制

默认情况下,vmrun start 会以 GUI 模式打开虚拟机窗口,如果需要在后台运行(无 GUI 界面),可添加 gui off 参数:

命令行打开虚拟机-图2
(图片来源网络,侵删)
vmrun -T ws start "/path/to/vm/my_vm.vmx" gui off

若需强制打开 GUI 窗口,则使用 gui on,可通过 nogui 参数确保虚拟机在无 GUI 环境中启动(如服务器场景)。

列出与管理运行中的虚拟机

查看当前运行的所有虚拟机:

vmrun list

结果会显示虚拟机的 vmx 文件路径和运行状态(如 runningstopped),停止指定虚拟机:

vmrun -T ws stop "/path/to/vm/my_vm.vmx" soft  # soft 表示软关机,也可用 hard(强制)或 trysoft(尝试软关机)

VirtualBox 虚拟机的命令行管理

VirtualBox 的命令行工具为 VBoxManage,功能强大且支持丰富的操作选项。

命令行打开虚拟机-图3
(图片来源网络,侵删)

安装与配置 VBoxManage

  • Windows:VBoxManage 位于 VirtualBox 安装目录的 VBoxManage.exe(如 C:\Program Files\Oracle\VirtualBox\VBoxManage.exe),同样建议添加到 PATH
  • Linux:通过包管理器安装 VirtualBox(如 sudo apt install virtualbox)后,VBoxManage 通常位于 /usr/bin/

基本命令:启动虚拟机

假设虚拟机名称为 Ubuntu-VM,启动命令如下:

VBoxManage startvm "Ubuntu-VM" --type headless  # --type headless 表示无 GUI 后台运行

参数说明:

  • startvm:启动虚拟机的命令。
  • 虚拟机名称:需要在 VirtualBox 中注册的虚拟机名称(可通过 VBoxManage list vms 查看)。
  • --type:指定启动模式,可选 gui(默认,打开 GUI)、headless(无 GUI)、sdl(通过 SDL 显示窗口)等。

列出与管理虚拟机

列出所有虚拟机(包括名称和 UUID):

VBoxManage list vms

列出正在运行的虚拟机:

VBoxManage list runningvms

停止虚拟机(支持 ACPI 关机或强制关闭):

VBoxManage controlvm "Ubuntu-VM" acpipowerbutton  # 模拟电源按钮(软关机)
VBoxManage controlvm "Ubuntu-VM" poweroff        # 强制关闭

虚拟机状态检查与快照管理

检查虚拟机当前状态:

VBoxManage showvminfo "Ubuntu-VM" | grep "State"

创建快照:

VBoxManage snapshot "Ubuntu-VM" take "snapshot_name" --description "快照描述"

恢复快照:

VBoxManage snapshot "Ubuntu-VM" restore "snapshot_name"

跨平台工具与高级技巧

使用 SSH 连接无 GUI 虚拟机

无论是 VMware 还是 VirtualBox,启动虚拟机时使用 headlessgui off 模式后,可通过 SSH 连接虚拟机(需确保虚拟机已开启 SSH 服务):

ssh username@vm_ip_address

批量操作与脚本自动化

通过 Shell 脚本批量管理虚拟机,以下脚本可启动多个 VirtualBox 虚拟机:

#!/bin/bash
vms=("VM1" "VM2" "VM3")
for vm in "${vms[@]}"; do
    VBoxManage startvm "$vm" --type headless
    echo "已启动虚拟机: $vm"
done

性能监控与资源调整

  • VMware:使用 vmrungetGuestIPAddress 获取 IP,或通过 esxtop 监控资源(适用于 ESXi)。
  • VirtualBox:通过 VBoxManage metrics 收集性能数据,或动态调整内存/CPU:
    VBoxManage modifyvm "Ubuntu-VM" --memory 4096  # 调整内存为 4GB
    VBoxManage modifyvm "Ubuntu-VM" --cpus 2       # 调整 CPU 为 2 核

常见问题与解决方案

问题:vmrunVBoxManage 命令不存在

解答:检查工具是否已安装并添加到系统 PATH,对于 VMware,确保在安装时勾选了“命令行工具”选项;对于 VirtualBox,可通过 which vmrun(Linux)或 where vmrun(Windows)确认路径。

问题:虚拟机启动后无法连接 SSH

解答

  • 检查虚拟机网络模式是否为 NATBridged,并确保虚拟机内 SSH 服务已启动(systemctl start ssh)。
  • 对于 NAT 模式,需在 VirtualBox/VMware 中配置端口转发,或使用 VBoxManage 查看虚拟机 IP:
    VBoxManage guestproperty get "Ubuntu-VM" "/VirtualBox/GuestInfo/Net/0/V4/IP"

相关问答 FAQs

问题 1:如何通过命令行关闭虚拟机而不强制关机?
解答:对于 VMware,使用 vmrun stop "/path/to/vm.vmx" soft 发送 ACPI 关机信号;对于 VirtualBox,使用 VBoxManage controlvm "VM名称" acpipowerbutton 模拟电源按钮,确保虚拟机系统支持 ACPI 关机。

问题 2:如何在 Linux 命令行中查看 VMware 虚拟机的实时日志?
解答:可通过 vmrungetRuntimeHostLog 命令获取日志路径,vmrun -T ws getRuntimeHostLog "/path/to/vm.vmx",然后使用 tail -f 实时查看日志文件,对于 VirtualBox,日志通常位于 ~/.VirtualBox/Machines/VM名称/Logs/ 目录下,可通过 tail -f 跟踪最新日志文件。

分享:
扫描分享到社交APP
上一篇
下一篇