Как проверить, работает ли (уже) ли Xvfb на дисплее: 0?

17

Название говорит обо всем. pgrep Xvfbтолько половина дела Это не скажет мне номер дисплея.

Павел Гольчицкий
источник

Ответы:

23

Я не уверен, что вы пытаетесь достичь, но вы можете проверить, доступен ли X Display, запустив «x display info»:

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

Примечание: если вы не можете получить доступ к дисплею, он также будет отображаться как «Свободный». Другим способом является проверка на наличие /tmp/.X0-lockкоторого содержит PID-файл X-сервера.

Вместо отображения команды более надежным способом будет проверка процессов, соответствующих двоичному файлу:

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

Источник: https://github.com/Bumblebee-Project/Bumblebee/blob/master/install-files/common-functions#L112.

Lekensteyn
источник
1
xdpyinfoделает трюк для меня, спасибо! Btw. Я хочу установить переменную DISPLAY env на основе Xvfb, работающей на: 0.
Павел Гольчицкий
См. Github.com/pjg/dotfiles/commit/83a27c8400c78809f5
Павел Гольчицкий
Итак, вы пытаетесь получить номер дисплея, используемый Xvfb? Попробуйте использовать команду ps в моем ответе и используйте что-то вроде, display=":${processes##*:}";display="${%% *}"чтобы получить номер дисплея (при условии, что он дан с командой, которая сделана, по Xorgкрайней мере)
Lekensteyn
Он будет запущен только на моем компьютере :0, так что простой проверки :0достаточно для моих нужд. Еще раз спасибо!
Павел Гольчицкий
Я не согласен с процессом проверки. Процесс может быть запущен, но не полностью инициализирован. xdpyinfo кажется, что это было бы лучшим решением, так как я предполагаю, что он взаимодействует с Xvfb.
Натан