Найдите свободное число дисплея X11

У меня есть некоторые модульные тесты, которым нужен дисплей X11, таким образом, я планирую запустить Xvfb прежде, чем выполнить их, но запустить Xvfb мне будет нужно свободное число дисплея для соединения его с. Мое лучшее предположение должно видеть то, что свободно в /tmp/.X11-unix но я не уверен, как обработать гонку, если много тестов пытаются запуститься одновременно.

sshd должен сделать это, кто-либо знает как?

11
задан James 26 March 2010 в 01:48
поделиться

1 ответ

Нет смысла пытаться найти свободный номер дисплея. Как вы уже догадались, между тем, как вы найдете свободный номер, и тем, как запустится Xvfb, другой X-сервер может занять порт, который вы считали свободным. Поэтому лучше просто попытаться запустить Xvfb, обработать неудачу, если порт занят, а затем повторить попытку на следующем порту, пока вы не добьетесь успеха или не исчерпаете все порты для попыток.

#!/bin/bash
DISPLAY_NUM=0
unset TEST_HAS_RUN
until [ $TEST_HAS_RUN ] || (( $DISPLAY_NUM > 10 ))
do
 Xvfb :$DISPLAY_NUM &
 jobs
 sleep 2  # assumption here is that Xvfb will exit quickly if it can't launch
 if jobs | grep Xvfb
 then  
   echo launching test on :$DISPLAY_NUM
   xterm -display :$DISPLAY_NUM
   TEST_HAS_RUN=1
   kill %-
 else   
   let DISPLAY_NUM=$DISPLAY_NUM+1
 fi
done
5
ответ дан 3 December 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: