Xvfb'nin hazır olması için nasıl anket yapılır?


11

Travis CI dokümantasyon çalışmasına diyor sleep 3başladıktan sonra xvfb"vermek [it] biraz zaman başlatmak için" için. manSayfada bu gecikmeye referans bulamadım . Bu kargo kült programlama mı? Değilse, mevcut olduğunu garanti etmek için uykudan ziyade nasıl anket yaparım ?

Yanıtlar:


6

Varsayılan olarak Xvfb, istemcilerin bağlanması için bir Unix Etki Alanı soketi oluşturur. Sistemimde bu dosya soket dosyası oluşturulur /tmp/.X11-unix/. inotifywaitBu dizindeki etkinlikleri dinlemek için kullanabilirsiniz . Örneğin,

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

ve ardından çalıştırın Xvfb :9(örneğin ekran 9). Hazır olduğunda görmelisin

/tmp/.X11-unix/ CREATE X9

dan inotifywaitolan sonlandırılır. Artık bağlanabilmeniz gerekir DISPLAY=:9.


Bu, uygun iş kontrolü bekleyebileceğiniz bir sistemde işi yapardı, ancak bunu Travis CI yapılandırma dosyasında yapmaya çalışıyorum. Arka plan işlerini kullanabileceğime ve bitirmelerini bekleyebileceğimi sanmıyorum.
l0b0

3
Basit while [ ! -e /tmp/.X11-unix/X99 ]; do sleep 0.1; doneaslında işe yaradı . Yol ipucu nedeniyle çözülmüş olarak işaretleme.
l0b0

1

Tam teşekküllü komut dosyaları çalıştırabilenler için xdpyinfo, istenen ekranda başka bir seçenek kullanmak olacaktır :

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

(Yanıt https://gist.github.com/tullmann/476cc71169295d5c3fe6'dan esinlenmiştir ).


Teşekkürler! Sadece tek xdpyinfosatır yeterli olacaktır; döngü milyonlarca farklı yolla yapılabilir.
l0b0

Tabii ki birçok şekilde yapılabilir. Yine de, bu snippet, Xvfb'nin hazır olması için ne kadar zaman harcadığına dair bir fikir veren güzel basılı çıktılar oluşturur. Bunu kendi kullanımım için yazdım, ancak başkalarının da bundan yararlanabileceğini fark ettim.
Anton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.