如何检查Xvfb是否已经在显示器:0上运行?


17

标题说明了一切。pgrep Xvfb只能做到一半。它不会告诉我显示号。

Answers:


23

我不确定您要完成什么,但是您可以通过运行“ x display info”来检查X Display是否可用:

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

注意:如果您无法访问该显示,它也会被报告为“免费”。另一种方法是检查其中是否/tmp/.X0-lock包含X服务器的PID文件。

除了显示命令之外,更可靠的方法是检查与二进制文件匹配的进程:

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为我帮忙,谢谢!顺便说一句。我想基于在0上运行的Xvfb设置DISPLAY env变量。
帕维尔Gościcki


因此,您正在尝试获取Xvfb使用的显示编号吗?尝试在我的答案中使用ps命令,并使用类似的方法display=":${processes##*:}";display="${%% *}"来获取显示编号(假设它Xorg至少是通过命令给出的)
Lekensteyn 2011年

我将仅在上运行它:0,因此简单的检查:0就足以满足我的需求。再次感谢!
帕维尔Gościcki

我不同意流程检查。该进程可以运行,但尚未完全初始化。xdpyinfo似乎是一个更好的解决方案,因为我认为它正在与Xvfb通信。
内森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.