Como verificar se o Xvfb (já) está sendo executado no visor: 0?

17

O título diz tudo. pgrep Xvfbfaz apenas metade do truque. Não vai me dizer o número do visor.

Paweł Gościcki
fonte

Respostas:

23

Não tenho certeza do que você está tentando realizar, mas você pode verificar se um X Display está disponível executando "x display info":

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

Nota: se você não puder acessar o display, ele também será relatado como "Gratuito". Outra maneira é verificar a existência de /tmp/.X0-lockqual contém o arquivo PID de um servidor X.

Em vez de exibir o comando, uma maneira mais confiável seria verificar os processos correspondentes ao binário:

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

Lekensteyn
fonte
1
xdpyinfofaz o truque para mim, obrigado! Btw. Eu quero definir a variável env DISPLAY com base no Xvfb executando em: 0.
Paweł Gościcki 9/09/11
Então você está tentando obter o número de exibição usado pelo Xvfb? Tente usar o comando ps na minha resposta e usar algo como display=":${processes##*:}";display="${%% *}"obter o número de exibição (assumindo que é dada com o comando que é feito por Xorgpelo menos)
Lekensteyn
Vou executá-lo apenas :0, portanto, uma simples verificação :0é suficiente para minhas necessidades. Obrigado novamente!
Paweł Gościcki 9/09/11
Não concordo com a verificação de processo. O processo pode estar em execução, mas não foi totalmente inicializado. O xdpyinfo parece que seria uma solução melhor, pois eu suponho que ele esteja se comunicando com o Xvfb.
22416 Nathan