web-dev-qa-db-ja.com

Xvfbディスプレイを表示する方法は?

私は次のようにディスプレイ番号:99でXvfbを介してSeleniumを実行しています:

/ 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以外の番号の表示は、デフォルトでは表示されません。 Seleniumがブラウザで何をしているかを実際に確認するには、どうすれば表示できますか?

27
Dziamid

それは仮想です。マニュアルページからXvfb(1)

Xvfbは、ディスプレイハードウェアや物理入力デバイスのないマシンで実行できるXサーバーです。仮想メモリを使用してダムフレームバッファをエミュレートします。

また、manページで:

Xvfb -pixdepths 3 27 -fbdir /var/tmpサーバーは、サーバー番号0として接続をリッスンし、デフォルトの画面構成(1画面、1280x1024x8)を持ち、3および27のpixmap深さもサポートし、フレームバッファに/ var/tmpのメモリマップファイルを使用します。 。

xwud -in /var/tmp/Xvfb_screen0前の例で起動したサーバーの画面0を表示します。

16
hroptatyr

次のように、Xvfbディスプレイに対してVNCサーバーを実行すると、ライブビューを取得できます。

x11vnc -display :99 -localhost &
vncviewer :0
30
seanf

必要なのは、x11vnc経由:

Sudo apt-get install x11vnc xvfb fluxbox

オプションで、Fluxboxをインストールして、シンプルなウィンドウマネージャーを使用します。


次に、リモート制御のためにXvfbへのアクセスをセットアップするには、X11 over SSHまたはVNC over SSHを使用できます。

export DISPLAY=:1
Xvfb $DISPLAY -screen 0 1024x768x16 &
fluxbox &
x11vnc -display $DISPLAY -bg -forever -nopw -quiet -listen localhost -xkb

スクリプトフレンドリーバージョンは次のとおりです。

export DISPLAY=${DISPLAY:-:0} # Select screen 0 by default.
xdpyinfo
if which x11vnc &>/dev/null; then
  ! pgrep -a x11vnc && x11vnc -bg -forever -nopw -quiet -display WAIT$DISPLAY &
fi
! pgrep -a Xvfb && Xvfb $DISPLAY -screen 0 1024x768x16 &
sleep 1
if which fluxbox &>/dev/null; then
  ! pgrep -a fluxbox && fluxbox 2>/dev/null &
fi
echo "IP: $(hostname -I) ($(hostname))"

注:以下で使用しています Dockerプロジェクト (check .funcs.cmds.inc.sh)。

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も削除されます)

以下も確認してください:

20
kenorb

簡単な解決策は、次のようなプログラムのスクリーンショットを常に撮ることです。

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をインストールする必要があります

0
user8162