我需要发出如下命令
Xvfb:6-屏幕 0 1024x768x24
其中 6 可以是显示器编号。现在 Xvfb 已经可以使用该显示器了,那么如何获取第一个未使用的显示器编号呢?
答案1
可能有更简单的方法,但我会编写一个脚本来查询显示内容信息。
大致有 3 种情况:
显示存在,并且您的 shell 可以访问该显示。 信息将会吐出大量信息。
显示存在,并且你的 shell没有可以访问显示屏。 信息将会出现访问错误和无法打开的错误,如下所示:
Invalid MIT-MAGIC-COOKIE-1 keyxdpyinfo: unable to open display ":0".
显示不存在。 信息将会弹出无法打开的错误:
xdpyinfo: unable to open display ":1".
脚本看起来有点像这样:
#/bin/bash
CHECKDISPLAY=0
DONE="no"
while [ "$DONE" == "no" ]
do
out=$(xdpyinfo -display :$CHECKDISPLAY 2>&1)
if [[ "$out" == name* ]] || [[ "$out" == Invalid* ]]
then
# command succeeded; or failed with access error; display exists
(( CHECKDISPLAY+=1 ))
else
# display doesn't exist
DONE="yes"
fi
done
echo "first available display is :$CHECKDISPLAY"
答案2
xvfb-run 有一个标志--auto-servernum
,其通过查找中的 X 锁文件来工作/tmp
。
将其压缩成一行,以便在 .bashrc 中为其添加别名,它看起来像这样:
i=0; while [ -f /tmp/.X$i-lock ]; do i=$(($i + 1)); done; echo $i
如果您只是想运行一个显示设置为 Xvfb 的程序,我只需使用 xvfb-run。