트래비스 CI 문서는 실행 말한다 sleep 3
시작한 후 xvfb
"주고 [가] 약간의 시간이 시작하는"에. man
페이지 에서이 지연에 대한 참조를 찾을 수 없습니다 . 이화물 컬트 프로그래밍입니까? 그렇지 않은 경우, 사용 가능 하도록 보장 하기 위해 잠보다 폴링을 어떻게합니까 ?
트래비스 CI 문서는 실행 말한다 sleep 3
시작한 후 xvfb
"주고 [가] 약간의 시간이 시작하는"에. man
페이지 에서이 지연에 대한 참조를 찾을 수 없습니다 . 이화물 컬트 프로그래밍입니까? 그렇지 않은 경우, 사용 가능 하도록 보장 하기 위해 잠보다 폴링을 어떻게합니까 ?
답변:
기본적으로 Xvfb
클라이언트가 연결하기위한 Unix 도메인 소켓이 생성됩니다. 내 시스템에서이 파일 소켓 파일은에 생성됩니다 /tmp/.X11-unix/
. inotifywait
이 디렉토리에서 이벤트를 청취 하는 데 사용할 수 있습니다 . 예를 들어
$ inotifywait -e create /tmp/.X11-unix/
그런 다음 실행하십시오 Xvfb :9
(예 : 디스플레이 9). 준비가되면
/tmp/.X11-unix/ CREATE X9
에서 inotifywait
종료됩니다. 에 연결할 수 있어야합니다 DISPLAY=:9
.
while [ ! -e /tmp/.X11-unix/X99 ]; do sleep 0.1; done
실제로 간단한 트릭을 수행했습니다 . 경로 팁으로 인해 해결 된 것으로 표시합니다.
본격적인 스크립트를 실행할 수있는 사람들을 위해 다른 옵션은 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
충분합니다. 루프는 백만 가지 방식으로 수행 될 수 있습니다.