Erste Nicht-Anzeigenummer wird verwendet

1368
uswaretech

Ich muss einen Befehl geben wie

Xvfb: 6-Bildschirm 0 1024 x 768 x 24

Dabei kann 6 eine Anzeigenummer sein. Jetzt kann Xvfb dieses Display bereits verwenden. Wie bekomme ich die erste Displaynummer, die nicht verwendet wird?

1

2 Antworten auf die Frage

1
Conley Owens

xvfb-run has a flag --auto-servernum which works by looking for the X lock files in /tmp.

Squished into a single line that you could alias in your .bashrc, it looks like this:

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

If you are simply trying to run a program with the display set to Xvfb, I would just use xvfb-run.

0
quack quixote

Es gibt zwar einen einfacheren Weg, aber ich würde ein Skript schreiben, das die Anzeigen mit xdpyinfo abfragt .

Es gibt ziemlich viele Fälle:

  1. Die Anzeige ist vorhanden und Ihre Shell hat Zugriff auf die Anzeige. xdpyinfo wird viele Informationen ausspucken.

  2. Die Anzeige ist vorhanden und Ihre Shell hat keinen Zugriff auf die Anzeige. xdpyinfo spuckt einen Zugriffsfehler und einen Fehler beim Öffnen aus, wie folgt :
    Invalid MIT-MAGIC-COOKIE-1 keyxdpyinfo: unable to open display ":0".

  3. Die Anzeige existiert nicht. xdpyinfo spuckt einen Fehler aus, der nicht geöffnet werden kann:
    xdpyinfo: unable to open display ":1".

Ein Skript würde ein bisschen so aussehen:

#/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"