Xvfb

如何輪詢 Xvfb 是否準備就緒?

  • May 25, 2021

Travis CI 文件說在sleep 3開始xvfb“給

$$ it $$man有時間開始”。我在頁面中找不到任何有關此延遲的參考。這是貨物崇拜程式嗎?如果不是,我如何輪詢而不是休眠以保證它可用?

預設情況下Xvfb會創建一個 Unix Domain 套接字供客戶端連接。在我的系統上,這個文件套接字文件是在/tmp/.X11-unix/. 您可以inotifywait用來偵聽此目錄中的事件。例如,

$ inotifywait -e create /tmp/.X11-unix/

然後執行Xvfb :9(例如顯示 9)。準備好後,您應該會看到

/tmp/.X11-unix/ CREATE X9

inotifywaitwhich 將終止。您現在應該可以連接到DISPLAY=:9.

對於那些可以執行成熟腳本的人來說,另一種選擇是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)。

引用自:https://unix.stackexchange.com/questions/310679