Comment vérifier si Xvfb est (déjà) en cours d'affichage: 0?

17

Le titre dit tout. pgrep Xvfbne fait que la moitié du tour. Il ne me dira pas le numéro d'affichage.

Paweł Gościcki
la source

Réponses:

23

Je ne suis pas sûr de ce que vous essayez d'accomplir, mais vous pouvez vérifier si un affichage X est disponible en exécutant "x display info":

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

Remarque: si vous ne pouvez pas accéder à l'affichage, il sera également signalé comme "gratuit". Une autre façon consiste à vérifier l'existence de /tmp/.X0-lockce qui contient le fichier PID d'un serveur X.

Au lieu d'afficher la commande, un moyen plus fiable serait de vérifier les processus correspondant au binaire:

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

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

Lekensteyn
la source
1
xdpyinfofait l'affaire pour moi, merci! Btw. Je veux définir la variable env DISPLAY basée sur Xvfb fonctionnant sur: 0.
Paweł Gościcki
Vous essayez donc d'obtenir le numéro d'affichage utilisé par Xvfb? Essayez d'utiliser la commande ps dans ma réponse et utilisez quelque chose comme display=":${processes##*:}";display="${%% *}"pour obtenir le numéro d'affichage (en supposant qu'il soit donné avec la commande qui est effectuée pendant Xorgau moins)
Lekensteyn
Je vais le faire fonctionner uniquement :0, donc une simple vérification :0suffit pour mes besoins. Merci encore!
Paweł Gościcki
Je ne suis pas d'accord avec la vérification des processus. Le processus peut être en cours d'exécution mais n'a pas été complètement initialisé. xdpyinfo semble que ce serait une meilleure solution car je suppose qu'il communique avec Xvfb.
Nathan