标签: xvfb

如何拍摄我的 Xvfb 缓冲区的屏幕截图?

我正在使用亚马逊 Linux。我想在我的 node.js Selnium 测试中运行一个无头 Chrome 浏览器。所以我像这样启动我的 Xvfb 服务器......

if ! pidof /usr/bin/Xvfb; then Xvfb :0 -screen 5 1024x768x8 & fi
Run Code Online (Sandbox Code Playgroud)

但是,当我在测试失败后尝试截取屏幕截图时,

DISPLAY=:0 import -window root /tmp/screenshot.png
Run Code Online (Sandbox Code Playgroud)

我收到下面提到的错误...

+ DISPLAY=:0
+ import -window root /tmp/screenshot.png
import: unable to open X server `:0' @ error/import.c/ImportImageCommand/369.
Run Code Online (Sandbox Code Playgroud)

如何截取 Xvfb 缓冲区的屏幕截图?

chrome screenshot imagemagick xvfb display

20
推荐指数
1
解决办法
7747
查看次数

GLX 扩展无法与 xvfb 正常工作

我有一个安装了以下软件包的 Ubuntu 14.04 系统:

libegl1-mesa:amd64
libegl1-mesa-drivers:amd64
libgl1-mesa-dri:amd64
libgl1-mesa-dri:i386
libgl1-mesa-glx:amd64
libgl1-mesa-glx:i386
libglapi-mesa:amd64
libglapi-mesa:i386
libgles2-mesa:amd64
libglu1-mesa:amd64
libopenvg1-mesa:amd64
libwayland-egl1-mesa:amd64
mesa-utils
xvfb
Run Code Online (Sandbox Code Playgroud)

我想在 xvfb 下启动一个应用程序。我首先使用以下命令启动 xvfb:

$ Xvfb :1 -screen 0 1024x768x24 +extension GLX +render -noreset >> xsession.log 2>&1 &
Run Code Online (Sandbox Code Playgroud)

然后检查 xvfb 日志文件:

Initializing built-in extension Generic Event Extension
Initializing built-in extension SHAPE
Initializing built-in extension MIT-SHM
Initializing built-in extension XInputExtension
Initializing built-in extension XTEST
Initializing built-in extension BIG-REQUESTS
Initializing built-in extension SYNC
Initializing built-in extension XKEYBOARD
Initializing built-in extension XC-MISC
Initializing built-in extension …
Run Code Online (Sandbox Code Playgroud)

opengl x11 xvfb

17
推荐指数
2
解决办法
1万
查看次数

如何轮询 Xvfb 准备就绪?

特拉维斯CI文件说,运行sleep 3开始后xvfb,以“给[它]一段时间来启动”。我在man页面中找不到任何对此延迟的引用。这是货物崇拜节目吗?如果没有,我如何轮询而不是睡眠以保证它可用?

xvfb

13
推荐指数
1
解决办法
1673
查看次数

为什么 `xvfb-run glxgears` 会因 swrast 错误而失败?

xvfb 应该让我在无头环境中运行 X 程序。但是当我运行时xvfb-run glxgears,我得到:

libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
Error: couldn't get an RGB, Double-buffered visual
Run Code Online (Sandbox Code Playgroud)

当我运行时LIBGL_DEBUG=verbose xvfb-run glxgears,我得到:

libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libGL error: failed to load driver: swrast
Error: couldn't get an RGB, Double-buffered visual
Run Code Online (Sandbox Code Playgroud)

我正在运行带有 Intel Ivy Bridge 集成显卡的 Lubuntu 13.10 x64。libgl1-mesa-dri 已安装且 /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so 存在。以 root 身份运行无济于事。

怎么了?

linux opengl xvfb

12
推荐指数
1
解决办法
3823
查看次数

如何在 Debian 上启动时启动 Xvfb?

我有一个 Debian Web 服务器,我偶尔会通过 Selenum 和 Python 使用它来抓取屏幕。

当被 Selenium 控制时,我使用 Xvfb 作为 Firefox 的虚拟 X 服务器来运行。鉴于我(认为)我必须使用 开始它sudo,我认为每次都从 Python 启动它是不可行的(请参阅我的 Stack Overflow 问题),所以我想我可以让它一直运行.

我目前在命令行中像这样启动它:

sudo Xvfb :99 -nolisten tcp -fbdir /var/run
Run Code Online (Sandbox Code Playgroud)

我应该使用什么方法在启动时自动执行此操作?我应该cron按照这里的建议使用吗?

startup debian xvfb

10
推荐指数
2
解决办法
2万
查看次数

Xvfb 或 Firefox 抛出错误并无故记录

根据这个问题的答案,我正在运行 Xvfb 来进行虚拟显示,因此 Firefox 将在我的 CentOS 服务器上运行。(我不需要看到 firefox 或使用 firefox 执行任何实际的键或屏幕输入/输出——它只需要运行以便 Selenium 可以驱动它。)我试图弄清楚为什么 Xvfb(或 firefox)正在抛出一堆错误。

我使用以下命令启动 Xvfb:

Xvfb :1 -screen 0 1024x768x24 &
Run Code Online (Sandbox Code Playgroud)

在我启动它之后,屏幕上立即回显了几条错误消息(奇怪的是,它们出现在 shell 提示之后):

[root@host /home/lm/cron]# Xvfb :1 -screen 0 1024x768x24 &               
[1] 9214
[root@host /home/lm/cron]# expected keysym, got XF86TouchpadOn: line 120 of inet
expected keysym, got XF86TouchpadOff: line 121 of inet
Run Code Online (Sandbox Code Playgroud)

当我运行 Selenium 测试脚本时,Selenium 日志中会出现更多错误:

5 XSELINUXs still allocated at reset
SCREEN: 0 objects of 176 bytes = 0 total bytes 0 private allocs
DEVICE: …
Run Code Online (Sandbox Code Playgroud)

centos firefox x11 xvfb

9
推荐指数
1
解决办法
8384
查看次数

如何在 X11 中创建虚拟副屏?

我正在尝试使用 xvfb 作为辅助屏幕,但我正在努力让两个屏幕协同工作。xvfb 似乎没有 randr 扩展名。

那么是否有另一种可能性来创建一个可以与我的真实屏幕一起处于双头模式的虚拟屏幕?

xorg multi-monitor xvfb

7
推荐指数
1
解决办法
4027
查看次数

xvfb 上缺少扩展“RANDR”

我的系统:

$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:        14.04
Codename:       trusty
Run Code Online (Sandbox Code Playgroud)

Xvfb:

$ dpkg -s xvfb
Package: xvfb
Status: install ok installed
Priority: optional
Section: x11
Installed-Size: 2140
Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
Architecture: amd64
Multi-Arch: foreign
Source: xorg-server
Version: 2:1.15.1-0ubuntu2.7
Provides: xserver
Run Code Online (Sandbox Code Playgroud)

当前问题:

Xvfb 不支持 RANDR 扩展,即使我添加了标志:

+extension RANDR
Run Code Online (Sandbox Code Playgroud)

如果我运行 xdpyinfo,RANDR 不在列表中。这是缺少的功能或错误。我在这里找到了一个带有补丁的参考:https : //bugzilla.novell.com/show_bug.cgi?id=823410

看起来像在 debian 等其他发行版中,已经有 Xvfb 的测试版本支持:在 Xvfb 中运行 Firefox:显示中缺少扩展名“RANDR”

我试图通过 Xvfb 运行一个程序,它返回以下错误:

Xlib:  extension "RANDR" missing on …
Run Code Online (Sandbox Code Playgroud)

ubuntu xrandr xvfb framebuffer

6
推荐指数
1
解决办法
2万
查看次数

如何正确终止 xvfb-run

为了执行与一些JavaScript单元测试因缘泊坞窗容器内(基于Ubuntu 14.04),我使用的是火狐开始在容器卡玛-脚本启动xvfb-run。启动脚本如下所示:

#!/bin/bash
set -o errexit 

# nasty workaround as xvfb-run doesn't cleanup properly...
trap "pkill -f /usr/lib/firefox/firefox" EXIT

xvfb-run --auto-servernum --server-args='-screen 0, 1024x768x16' firefox $1
Run Code Online (Sandbox Code Playgroud)

启动浏览器并执行单元测试效果很好。执行测试后 karma 终止生成的浏览器实例 - 在我的例子中是通过 xvfb-run 启动 firefox 的脚本。

在上面的脚本中,您可以看到我trap在退出脚本时注册了一个来杀死启动的 Firefox。这有效,但该脚本不是一个很好的公民,因为它终止当前正在运行的所有Firefox 实例,而不是仅仅终止由脚本启动的一个实例。我首先尝试杀死该xfvb-run进程但杀死此进程对xvfb-run脚本启动的子进程没有影响......

如果我xvfb-run手动启动 Firefox,则会产生一堆生成的进程:

root@1d7a5988e521:/data# xvfb-run --auto-servernum --server-args='-screen 0, 1024x768x16' firefox &
[1] 348
root@1d7a5988e521:/data# ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 bash
  348 …
Run Code Online (Sandbox Code Playgroud)

bash xvfb

6
推荐指数
1
解决办法
2万
查看次数

如何在没有 root 的情况下运行 Xvfb?

在没有 root 的服务器上的期望结果:

1) 在Xvfb没有输入设备的情况下运行,或

2) 开始Xvfb运行

背景:

我有两台机器都具有几乎相同的 CentOS 构建。一台机器有 root 访问权限和互联网,另一台是沙盒(没有 root 访问权限),没有包管理器(没有 yum),也没有 Xserver。我试图让XvfbX 虚拟帧缓冲区)在目标机器上运行以试验无头 firefox。当Xvfb工作时,我可以使用xvfb-run

我试过的:

我已Xvfb使用此方法成功传输了二进制文件和用户共享库(请参阅答案下方的注释)。我能够运行Xvfb,像这样

Xvfb :1 -nolisten tcp -screen 0 1680x1050x16
Run Code Online (Sandbox Code Playgroud)

但后来我收到一个键盘映射错误(旁白:我还想处理我设置的临时目录问题export TMPDIR=~/tmp):

_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
XKB: Failed to compile keymap
Keyboard initialization failed. This could be a missing or incorrect setup of …
Run Code Online (Sandbox Code Playgroud)

xorg centos xvfb xkb

6
推荐指数
2
解决办法
8884
查看次数