Como pesquisar para o Xvfb estar pronto?

9

A documentação do Travis CI diz para executar sleep 3 depois de iniciar xvfb para "dar [algum] tempo para iniciar". Não encontrei nenhuma referência a esse atraso na man página . Essa programação de cultos de carga? Se não, como eu enquete ao invés de dormir para garantir que está disponível?

    
por l0b0 18.09.2016 / 19:12

2 respostas

4

Por padrão, Xvfb criará um soquete do Domínio Unix para os clientes se conectarem. No meu sistema, esse arquivo de soquete de arquivo é criado em /tmp/.X11-unix/ . Você pode usar inotifywait para escutar eventos nesse diretório. Por exemplo,

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

e, em seguida, execute Xvfb :9 (exibição 9, por exemplo). Quando estiver pronto, você deverá ver

/tmp/.X11-unix/ CREATE X9

do inotifywait que terminará. Agora você deve conseguir se conectar a DISPLAY=:9 .

    
por 18.09.2016 / 20:07
1

Para quem pode executar scripts completos, outra opção seria usar xdpyinfo na exibição desejada:

# 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!"

(Resposta inspirada pelo link ).

    
por 22.01.2018 / 17:54

Tags