¿Cómo verificar si Xvfb está (ya) ejecutándose en la pantalla: 0?

17

El título lo dice todo. pgrep Xvfbsolo hace la mitad del truco. No me dirá el número de pantalla.

Paweł Gościcki
fuente

Respuestas:

23

No estoy seguro de lo que está tratando de lograr, pero puede verificar si una pantalla X está disponible ejecutando "x información de pantalla":

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

Nota: si no puede acceder a la pantalla, también se informará como "Gratis". Otra forma es verificar si existe /tmp/.X0-lockel archivo PID de un servidor X.

En lugar de mostrar el comando, una forma más confiable sería verificar los procesos que coinciden con el binario:

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

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

Lekensteyn
fuente
1
xdpyinfohace el truco para mí, gracias! Por cierto. Quiero establecer la variable DISPLAY env basada en Xvfb que se ejecuta en: 0.
Paweł Gościcki
Entonces, ¿estás tratando de obtener el número de pantalla utilizado por Xvfb? Intente usar el comando ps en mi respuesta y use algo como display=":${processes##*:}";display="${%% *}"obtener el número de pantalla (suponiendo que se dé con el comando que se realiza Xorgal menos)
Lekensteyn
Lo tendré funcionando solo :0, por lo que una simple verificación :0es suficiente para mis necesidades. ¡Gracias de nuevo!
Paweł Gościcki
No estoy de acuerdo con el proceso de verificación. El proceso puede estar ejecutándose pero no se ha inicializado por completo. Parece que xdpyinfo sería una mejor solución ya que supongo que se está comunicando con Xvfb.
Nathan