obtendo o primeiro número não exibido em uso

1

Eu preciso dar um comando como

Xvfb: 6-tela 0 1024x768x24

Onde 6 pode ser um número de exibição. Agora o Xvfb já pode estar usando esse Display, então como obtenho o primeiro número de exibição que não está em uso?

    
por uswaretech 18.03.2010 / 12:34

2 respostas

0

Pode haver uma maneira mais fácil, mas eu escreveria um script que consultasse as exibições com xdpyinfo .

Existem praticamente 3 casos:

  1. A exibição existe e seu shell tem acesso ao display. xdpyinfo mostrará muitas informações.

  2. A exibição existe e seu shell não tem acesso ao display. xdpyinfo emitirá um erro de acesso e um erro incapaz de abrir, como este:
    Invalid MIT-MAGIC-COOKIE-1 keyxdpyinfo: unable to open display ":0".

  3. A exibição não existe. xdpyinfo emitirá um erro incapaz de abrir:
    xdpyinfo: unable to open display ":1".

Um script seria parecido com isto:

#/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"
    
por 18.03.2010 / 13:55
1

xvfb-run tem um sinalizador --auto-servernum que funciona procurando pelos arquivos de bloqueio X em /tmp .

Squished em uma única linha que você poderia alias em seu .bashrc, se parece com isso:

i=0; while [ -f /tmp/.X$i-lock ]; do i=$(($i + 1)); done; echo $i

Se você está simplesmente tentando rodar um programa com o display configurado para Xvfb, eu usaria apenas o xvfb-run.

    
por 04.04.2010 / 18:13