我尝试使用此命令运行 headlesless firefox,sudo xvfb-run -a firefox http://google.com
因此出现此错误
(process:9000): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
Xlib: extension "RANDR" missing on display ":113".
我已经参考此链接搜索如何解决此问题https://stackoverflow.com/questions/17944234/xlib-extension-randr-missing-on-display-21-trying-to-run-headless-googl
Xvfb :113 -screen 0 1024x768x24 -extension RANDR &
当我重新运行我得到的相同命令时,Xlib: extension "RANDR" missing on display ":114".
依此类推
我该如何解决这个问题?任何解决方案都将不胜感激
答案1
运行 xvfb-run 如下:
xvfb-run -a -s "-screen 0 1024x768x24" firefox http://google.com
运行 Xvfb,然后运行 xvfb-run 不会导致后者在前一个 Xvfb 的显示器上运行。如果您希望手动运行 Xvfb,则需要为要在另一个显示器上运行的应用程序设置 DISPLAY 变量。
无论如何,您不需要 Firefox 的 RANDR 扩展。它在运行时不需要调整显示大小。
答案2
如果你想明确设置显示号码,请使用以下命令:
xvfb-run -n 113 --server-args='-screen 0, 1024x768x24' firefox http://google.com > /dev/null &
这样,您稍后就可以基于已知数字执行一些操作,例如说 x11grab 它或向该显示器添加另一个程序。
如果您使用的是最新的软件包,则会默认安装 RANDR 扩展。例如在 Ubuntu Server 16.04 上:
$sudo apt-get install xvfb
$Xvfb :99 -screen 0 1024x768x24 > /dev/null &
$ xdpyinfo -display :99 | grep "number of extensions" -A 25
number of extensions: 25
BIG-REQUESTS
Composite
DAMAGE
DOUBLE-BUFFER
DPMS
GLX
Generic Event Extension
MIT-SCREEN-SAVER
MIT-SHM
Present
**** RANDR ****
RECORD
RENDER
SECURITY
SGI-GLX
SHAPE
SYNC
X-Resource
XC-MISC
XFIXES
XINERAMA
XInputExtension
XKEYBOARD
XTEST
XVideo