Як опитуватись на тему 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.