이것트래비스 CI 문서sleep 3
실행 후 시작하라고 말합니다 xvfb
. "시작할 시간을 주세요". 이 지연에 대한 참조를 찾을 수 없습니다.man
페이지. 이게 카고 컬트 프로그래밍인가요? 그렇지 않다면 어떻게 해야 합니까?투표자는 대신보장하다시간이?
답변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).