Xvfb
如何輪詢 Xvfb 是否準備就緒?
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
從
inotifywait
which 將終止。您現在應該可以連接到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)。