Я должен дать команду как
Xvfb:6 - экран 0 1024x768x24
Где 6 может быть число дисплея. Теперь Xvfb может уже использовать тот Дисплей, поэтому как я получаю первое число дисплея, не используемое?
Может быть более легкий путь, но я записал бы сценарий, который запрашивает дисплеи с xdpyinfo.
Существует в значительной степени 3 случая:
Дисплей существует, и Ваша оболочка имеет доступ к дисплею. xdpyinfo выложит много информации.
Дисплей существует, и Ваша оболочка не имеет доступа к дисплею. xdpyinfo выложит ошибку доступа и неспособное к ошибке открытия, как это:
Invalid MIT-MAGIC-COOKIE-1 keyxdpyinfo: unable to open display ":0".
Дисплей не существует. xdpyinfo выложит неспособное к ошибке открытия:
xdpyinfo: unable to open display ":1".
Сценарий немного походил бы на это:
#/bin/bash
CHECKDISPLAY=0
DONE="no"
while [ "$DONE" == "no" ]
do
out=$(xdpyinfo -display :$CHECKDISPLAY 2>&1)
if [[ "$out" == name* ]] || [[ "$out" == Invalid* ]]
then
# command succeeded; or failed with access error; display exists
(( CHECKDISPLAY+=1 ))
else
# display doesn't exist
DONE="yes"
fi
done
echo "first available display is :$CHECKDISPLAY"
xvfb-управляемый имеет флаг --auto-servernum
который работает путем поиска этих X, привязывают файлы /tmp
.
Хлюпавший в одну строку, которую Вы могли исказить в своем .bashrc, он похож на это:
i=0; while [ -f /tmp/.X$i-lock ]; do i=$(($i + 1)); done; echo $i
Если бы Вы просто пытаетесь запустить программу с набором дисплея к Xvfb, я просто использовал бы xvfb-управляемый.