答え1
デフォルトでは、Xvfb
クライアントが接続するUnixドメインソケットが作成されます。私のシステムでは、このファイルソケットファイルはにあります/tmp/.X11-unix/
。これを使用して、inotifywait
このディレクトリのイベントを受信できます。例えば、
$ inotifywait -e create /tmp/.X11-unix/
次に実行しますXvfb :9
(例:ディスプレイ9)。準備ができたら見なければならないこと
/tmp/.X11-unix/ CREATE X9
終了しますinotifywait
。これで接続できますDISPLAY=:9
。
答え2
完全なスクリプトを実行できる人のための別のオプションは、目的のディスプレイxdpyinfo
で使用することです。
# Start Xvfb
sudo /usr/bin/Xvfb "${DISPLAY}" -screen 0 1280x800x24 &
# Wait for Xvfb
MAX_ATTEMPTS=120 # About 60 seconds
COUNT=0
echo -n "Waiting for Xvfb to be ready..."
while ! xdpyinfo -display "${DISPLAY}" >/dev/null 2>&1; do
echo -n "."
sleep 0.50s
COUNT=$(( COUNT + 1 ))
if [ "${COUNT}" -ge "${MAX_ATTEMPTS}" ]; then
echo " Gave up waiting for X server on ${DISPLAY}"
exit 1
fi
done
echo " Done - Xvfb is ready!"
(からインスピレーションを得た回答https://gist.github.com/tullmann/476cc71169295d5c3fe6)。