Як опитуватись на тему Xvfb, щоб бути готовим?


11

Документація щодо Travis CI говорить про запуск sleep 3після запуску xvfb"дайте [йому] деякий час для запуску". Я не міг знайти жодної посилання на цю затримку на manсторінці . Це вантажне культове програмування? Якщо ні, то як я опитуюсь замість сну, щоб гарантувати, що він доступний?

Відповіді:


6

За замовчуванням Xvfbбуде створено розетку Unix Domain для підключення клієнтів. У моїй системі цей файл сокетного файлу створений в /tmp/.X11-unix/. Ви можете використовувати inotifywaitдля прослуховування подій у цьому каталозі. Наприклад,

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

а потім запустіть Xvfb :9(наприклад, дисплей 9). Коли вона буде готова, ви повинні побачити

/tmp/.X11-unix/ CREATE X9

з inotifywaitякого закінчиться. Тепер ви маєте змогу підключитися DISPLAY=:9.


Це зробить роботу в системі, де я можу очікувати належного контролю за роботою, але я намагаюся зробити це у файлі конфігурації Travis CI. Я не думаю, що я можу покластися на можливість використовувати фонові завдання та чекати, коли вони закінчать.
l0b0

3
Простий while [ ! -e /tmp/.X11-unix/X99 ]; do sleep 0.1; doneнасправді зробив трюк . Позначення як вирішене через підказку шляху.
l0b0

1

Для тих, хто може запускати повноцінні сценарії, іншим варіантом буде використання 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рядка було б достатньо; петля може бути зроблена мільйоном різних способів.
l0b0

Звичайно, це можна зробити багатьма способами. Хоча цей фрагмент створює досить друкований вихід, який також дає вам уявлення про те, скільки часу знадобилося, щоб Xvfb був готовий. Я написав, що для власного використання, але зрозумів, що і інші можуть отримати користь від цього.
Антон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.