Как сделать отображение 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 запускает Xvfb
  • X11VNC_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

Другие вопросы по тегам