Як перевірити, чи Xvfb (вже) працює на дисплеї: 0?


17

Назва говорить все це. pgrep Xvfbлише половина хитрості. Він не скаже мені номер дисплея.

Відповіді:


23

Я не впевнений, що ви намагаєтеся зробити, але ви можете перевірити, чи доступний X-дисплей, запустивши "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


1
xdpyinfoтрюк для мене, дякую! Btw. Я хочу встановити змінну DISPLAY env на основі Xvfb, що працює на: 0.
Paweł Gościcki


Отже, ви намагаєтеся отримати номер відображення, який використовує Xvfb? Спробуйте скористатись командою ps у моїй відповіді та скористайтеся чимось на зразок, display=":${processes##*:}";display="${%% *}"щоб отримати номер відображення (припустимо, що він заданий командою, яка виконується Xorgпринаймні)
Lekensteyn

У мене він буде працювати лише увімкнено :0, тому :0для моїх потреб достатня проста перевірка . Знову дякую!
Paweł Gościcki

Я не згоден з перевіркою процесу. Процес може працювати, але не ініціалізується повністю. xdpyinfo здається, що це було б кращим рішенням, оскільки я припускаю, що він спілкується з Xvfb.
Натан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.