Где 6 может быть номером дисплея. Теперь Xvfb уже может использовать этот дисплей, так как я могу получить первый номер дисплея, который не используется?
2 ответа на вопрос
1
Conley Owens
xvfb-run имеет флаг, --auto-servernumкоторый работает, ища файлы блокировки X в /tmp.
Выделенный в одну строку, чтобы вы могли использовать псевдоним в вашем .bashrc, это выглядит так:
i=0; while [ -f /tmp/.X$i-lock ]; do i=$(($i + 1)); done; echo $i
Если вы просто пытаетесь запустить программу с установленным на Xvfb дисплеем, я бы просто использовал xvfb-run.
0
quack quixote
Возможно, есть более простой способ, но я бы написал скрипт, который запрашивает дисплеи с помощью 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"