You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Kubuntu系统中定期对VirtualBox虚拟机窗口进行外部截图

如何在Kubuntu系统中定期对VirtualBox虚拟机窗口进行外部截图

嘿,我来给你几个实用的方案,完美解决你在Kubuntu上定时对VirtualBox虚拟机进行外部截图的需求——全程在宿主机操作,完全不用折腾虚拟机内部~

方案一:用VirtualBox官方命令行工具(最稳定推荐)

VirtualBox其实自带了命令行控制工具VBoxManage,这是最靠谱的方法:不管虚拟机窗口在哪个桌面、有没有被其他窗口覆盖,它都能直接从VirtualBox底层完成截图,完全不受窗口显示状态影响。

步骤如下:

  1. 先确认你的虚拟机名称或UUID:
    打开终端输入这条命令,就能列出所有已创建的虚拟机信息:
    VBoxManage list vms
    
    记下你要截图的那台虚拟机的名称(比如叫"My Work VM")。
  2. 手动测试截图命令:
    把下面的路径和VM名称换成你自己的,先测试一下能否成功截图:
    VBoxManage controlvm "My Work VM" screenshotpng /home/你的用户名/vm_screenshots/screenshot_$(date +%Y%m%d_%H%M%S).png
    
    这里用date命令生成带时间戳的文件名(比如screenshot_20240520_143000.png),避免每次截图覆盖旧文件。记得提前创建好保存截图的目录:
    mkdir -p /home/你的用户名/vm_screenshots
    
  3. 设置定时执行:
    用Kubuntu自带的cron来实现每30分钟自动执行一次。打开终端输入:
    crontab -e
    
    选择你习惯的编辑器(比如nano)后,在最后添加一行:
    */30 * * * * VBoxManage controlvm "My Work VM" screenshotpng /home/你的用户名/vm_screenshots/screenshot_$(date +\%Y\%m\%d_\%H\%M\%S).png
    
    注意这里的%要加反斜杠转义成\%,因为在cron里%有特殊含义。保存退出后,cron就会自动每30分钟给你的VM截一次图啦。

方案二:结合xdotool定位虚拟机窗口后截图

如果你更想针对虚拟机的可视化窗口本身截图(类似手动点击窗口截图的效果),可以用xdotool找到VM窗口的ID,再配合截图工具完成操作。

步骤:

  1. 先安装xdotool:
    sudo apt update && sudo apt install xdotool
    
  2. 找到虚拟机窗口的标识:
    可以输入这条命令(替换成你的VM窗口标题):
    xdotool search --name "My Work VM"
    
    或者输入xprop WM_CLASS后点击虚拟机窗口,会输出窗口的类名(通常是VirtualBox Machine)。
  3. 测试截图命令:
    scrot的话:
    scrot -b /home/你的用户名/vm_screenshots/screenshot_$(date +%Y%m%d_%H%M%S).png -w $(xdotool search --class "VirtualBox Machine" | head -n1)
    
    或者用Kubuntu自带的spectacle
    spectacle -b -n -o /home/你的用户名/vm_screenshots/screenshot_$(date +%Y%m%d_%H%M%S).png --window $(xdotool search --class "VirtualBox Machine" | head -n1)
    
    其中-b参数表示包含窗口边框,-w/--window用来指定要截图的窗口ID。
  4. 设置定时任务:
    同样通过crontab -e添加定时执行的命令即可。不过这个方法依赖虚拟机窗口处于运行状态,要是窗口被关闭就会失效,稳定性不如方案一。

方案三:模拟Host+E快捷键截图

如果你想模拟手动按Host+E的操作,也可以用xdotool实现:

xdotool search --class "VirtualBox Machine" windowfocus key --window %@ Ctrl_R+e

这里默认Host键是右Ctrl(Ctrl_R),如果你的Host键是其他键(比如左Alt),就换成对应的键名(比如Alt_L)。不过这个方法可能受窗口焦点影响——要是VM窗口没在前台,按键可能会发送到其他窗口,所以优先级不如前两个方案。

总结一下,优先选方案一:用VirtualBox官方的命令行工具,稳定又省心,完全不用管虚拟机窗口的显示状态,定时任务配置也简单。

备注:内容来源于stack exchange,提问作者dargaud

火山引擎 最新活动