Jak sondować, aby Xvfb był gotowy?


11

Dokumentacja Travis CI mówi, aby uruchomić sleep 3po rozpoczęciu xvfb„dać [trochę czasu] na rozpoczęcie”. Nie mogłem znaleźć żadnego odniesienia do tego opóźnienia w manstronie . Czy to program kultowego ładunku? Jeśli nie, to jak sondować, a nie spać, aby upewnić się, że jest dostępny?

Odpowiedzi:


6

Domyślnie Xvfbutworzy gniazdo domeny Unix dla klientów do połączenia. W moim systemie ten plik gniazda pliku jest tworzony w /tmp/.X11-unix/. Możesz użyć inotifywaitdo nasłuchiwania zdarzeń w tym katalogu. Na przykład,

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

a następnie uruchom Xvfb :9(na przykład wyświetl 9). Kiedy będzie gotowy, powinieneś zobaczyć

/tmp/.X11-unix/ CREATE X9

od inotifywaitktórego zakończy się. Powinieneś teraz móc się połączyć DISPLAY=:9.


Wykonałoby to zadanie w systemie, w którym mogę oczekiwać prawidłowej kontroli zadania, ale próbuję to zrobić w pliku konfiguracyjnym Travis CI. Nie sądzę, że mogę polegać na tym, że mogę korzystać z zadań w tle i czekać, aż się zakończą.
l0b0

3
Prosty while [ ! -e /tmp/.X11-unix/X99 ]; do sleep 0.1; donefaktycznie załatwił sprawę . Oznaczenie jako rozwiązane ze względu na wierzchołek ścieżki.
l0b0

1

Dla tych, którzy potrafią uruchamiać pełne skrypty, inną opcją byłoby użycie xdpyinfona pożądanym ekranie:

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

(Odpowiedź zainspirowana https://gist.github.com/tullmann/476cc71169295d5c3fe6 ).


Dzięki! Wystarczyłaby pojedyncza xdpyinfolinia; pętlę można wykonać na milion różnych sposobów.
l0b0

Pewnie, że można to zrobić na wiele sposobów. Chociaż ten fragment tworzy dość wydrukowany wydruk, który daje również pojęcie o tym, ile czasu zajęło przygotowanie Xvfb. Napisałem to na własny użytek, ale zdałem sobie sprawę, że inni też mogą na tym skorzystać.
Anton
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.