Как сделать отображение Xvfb видимым?
Я запускаю селен через Xvfb на дисплее номер 99, как это:
/ usr / bin / Xvfb: 99 -ac -screen 0 1024x768x8 & export DISPLAY = ": 99" && java -jar /usr/lib/selenium/selenium-server-standalone-2.24.1.jar -port 4444
Однако дисплей с номером, отличным от 0, по умолчанию не отображается. Как сделать так, чтобы на самом деле было видно, что селен делает в браузере?
4 ответа
Это виртуально. Со страницы руководства Xvfb(1)
:
Xvfb - это X-сервер, который может работать на машинах без аппаратного дисплея и физических устройств ввода. Он эмулирует тупой кадровый буфер с использованием виртуальной памяти.
Также в справочной странице:
Xvfb -pixdepths 3 27 -fbdir /var/tmp
Сервер будет прослушивать соединения как сервер № 0, будет иметь конфигурацию экрана по умолчанию (один экран, 1280x1024x8), также будет поддерживать глубину растрового изображения 3 и 27 и будет использовать файлы отображения памяти в /var/tmp для кадрового буфера.
xwud -in /var/tmp/Xvfb_screen0
Отображение экрана 0 сервера, запущенного в предыдущем примере.
Все, что вам нужно, это установить x11vnc
с помощью:
sudo apt-get install x11vnc xvfb fluxbox
При желании установите Fluxbox, чтобы иметь простой оконный менеджер.
Затем, чтобы настроить доступ к Xvfb для удаленного управления, вы можете использовать X11 через SSH или VNC через SSH, например
export DISPLAY=:1
Xvfb :1 -screen 0 1024x768x16 &
fluxbox &
x11vnc -display :1 -bg -nopw -listen localhost -xkb
Если ваш Xvfb прослушивает только localhost, вы можете настроить туннелирование на localhost, чтобы vncviewer мог подключиться к localhost, чтобы получить удаленный контроль над сервером. Например
ssh -N -T -L 5900:localhost:5900 user@remotehost &
vncviewer -encodings 'copyrect tight zrle hextile' localhost:5900
Или, чтобы прослушать все адреса с паролем, используйте:
x11vnc -display :0.0 -usepw
Чтобы установить пароль, запустите: x11vnc -storepasswd
,
Смотрите: Удаленное управление SSH на странице Википедии Xvfb
Или вы можете использовать следующий однострочник:
$ x11vnc -create -env FD_PROG=/usr/bin/fluxbox \
-env X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 \
-env X11VNC_CREATE_GEOM=${1:-1024x768x16} \
-gone 'killall Xvfb' \
-bg -nopw
-create
запускает XvfbX11VNC_FINDDISPLAY_ALWAYS_FAILS=1
переводит в созданный сеанс Xvfb (Показать:1
скорее, чем:0
который будет нормальным рабочим столом)FD_PROG=/usr/bin/fluxbox
запускает Fluxbox (у Ubuntu должен быть фоновый логотип Ubuntu)X11VNC_CREATE_GEOM=${1:-1024x768x16}
устанавливает экран в 16-битный цвет 1024x768-gone
убирает при выходе, иначе Xvfb остается позади (убиваетxvfb
также убиваетfluxbox
)
Смотрите: Ubuntu Fluxbox GUI с x11vnc и Xvfb
Вы можете получить представление в реальном времени, запустив VNC-сервер на дисплее Xvfb, например так:
x11vnc -display :99 -localhost &
vncviewer :0
Простое решение также состоит в том, чтобы постоянно делать скриншоты программы следующим образом:
while /bin/true; do
DISPLAY=:99 import -window root ~/Pictures/xvfb_screenshot.png
sleep 0.1
done &
PID=$!
feh --reload 0.1 ~/Pictures/xvfb_screenshot.png 2>/dev/null
kill $PID
Примечание: требуется установить imagemagick и feh