Come verificare se Xvfb è (già) in esecuzione sul display: 0?


17

Il titolo dice tutto. pgrep Xvfbfa solo metà del trucco. Non mi dirà il numero del display.

Risposte:


23

Non sono sicuro di ciò che stai cercando di realizzare, ma puoi verificare se un X Display è disponibile eseguendo "x display info":

xdpyinfo -display :0 >/dev/null 2>&1 && echo "In use" || echo "Free"

Nota: se non riesci ad accedere al display, verrà segnalato anche come "gratuito". Un altro modo è verificare l'esistenza di /tmp/.X0-lockquale contiene il file PID di un server X.

Invece di visualizzare il comando, un modo più affidabile sarebbe verificare i processi che corrispondono al binario:

pids=$(pidof /usr/bin/Xvfb)
if [ -n "$pids" ]; then
    processes="$(ps --format command --no-headers -ww --pid $pids)"
else
    echo "Not running"
fi

Fonte: https://github.com/Bumblebee-Project/Bumblebee/blob/master/install-files/common-functions#L112


1
xdpyinfofa il trucco per me, grazie! Btw. Voglio impostare la variabile env DISPLAY basata su Xvfb in esecuzione su: 0.
Paweł Gościcki,


Quindi stai cercando di ottenere il numero di display utilizzato da Xvfb? Prova a usare il comando ps nella mia risposta e usa qualcosa di simile display=":${processes##*:}";display="${%% *}"per ottenere il numero visualizzato (supponendo che sia dato con il comando che è fatto Xorgalmeno per)
Lekensteyn

Lo farò funzionare solo :0, quindi un semplice controllo :0è sufficiente per le mie esigenze. Grazie ancora!
Paweł Gościcki,

Non sono d'accordo con il controllo del processo. Il processo può essere in esecuzione ma non è stato inizializzato completamente. xdpyinfo sembra che sarebbe una soluzione migliore poiché presumo che stia comunicando con Xvfb.
Nathan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.