virsh screenshot 抓取虚机画面
screenshot 直接抓取图形虚机当前显示的内容并保存为 PPM 文件,不需要打开 VNC 客户端。它的典型用途是快速取证:虚机卡在引导界面、Windows 出现蓝屏、桌面服务异常,抓一张图往往比让同事口头描述界面更快定位。输出格式是无压缩的 PPM,用 ImageMagick 转成 PNG 更便于查看与归档;对没有图形输出的文本控制台虚机,抓屏可能是空画面。
基本信息
| 适用平台 | 使用 libvirt 的 Linux 宿主,目标虚机需有图形设备 |
|---|---|
| 抓屏命令 | virsh screenshot <域> <文件路径> |
| 指定屏幕 | virsh screenshot <域> <文件路径> --screen 0 |
| 输出格式 | PPM,无压缩、体积较大 |
| 转码方式 | convert 或 magick 命令转为 PNG |
| 适用对象 | VNC 或 Spice 图形控制台的虚机 |
| 常见失败 | 文本控制台虚机或宿主无图形输出时抓到空文件 |
典型使用场景
- 虚机卡在引导或登录界面,需要确认画面上的具体提示
- Windows 蓝屏排查:记录错误码与相关提示文字
- 图形服务异常:确认桌面是否启动、是否停在恢复模式
- 自动化巡检:定期抓屏留档,作为界面状态的证据
- 远程协助:把画面发给同事或厂商,减少口头描述误差
- 变更前后对比:安装或升级后抓屏确认界面状态
抓屏与转码
抓屏与转码
virsh list # 确认目标域正在运行
virsh screenshot vm1 /tmp/vm1.ppm # 抓取当前画面为 PPM
convert /tmp/vm1.ppm /tmp/vm1.png # 转 PNG(需要 ImageMagick)
ls -l /tmp/vm1.ppm /tmp/vm1.png # 核对文件大小,PPM 通常明显更大
virsh screenshot vm2 /tmp/vm2.ppm --screen 0 # 多屏虚机指定屏幕编号
file /tmp/vm1.ppm # 确认文件类型,避免抓到空文件结果与问题读法
| 现象 | 含义 | 处理方向 |
|---|---|---|
| 空文件或极小文件 | 虚机无图形输出或图形设备未启用 | 改用串口日志或检查域定义的图形设备 |
| 全黑画面 | 屏幕保护、未登录或显示未初始化 | 按键唤醒后重抓,或改看串口输出 |
| 画面停在固件界面 | 引导失败或未从预期设备启动 | 核对引导顺序与安装介质 |
| 画面正常但业务不通 | 问题在系统内部而非显示层 | 转向日志与网络排查 |
| PNG 无法生成 | 缺少转换工具或源文件损坏 | 确认 ImageMagick 已安装并检查 PPM 完整性 |
抓屏是只读操作,不会改变虚机状态,适合在故障现场先取证再动手,避免排查过程破坏现场信息。
PPM 文件未压缩,一张 1080p 画面可能达到数 MB:留档时转成 PNG,并按巡检周期控制保留数量,避免占用过多空间。