Answers:
默认情况下Xvfb
会创建一个Unix域套接字供客户端连接。在我的系统上,此文件套接字文件是在中创建的/tmp/.X11-unix/
。您可以inotifywait
用来侦听此目录中的事件。例如,
$ inotifywait -e create /tmp/.X11-unix/
然后运行Xvfb :9
(例如显示9)。准备好后,您应该会看到
/tmp/.X11-unix/ CREATE X9
从inotifywait
终止。现在,您应该可以连接到了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)。
xdpyinfo
一行就足够了;循环可以一百万种不同的方式完成。