正在获取第一个正在使用的非显示号码

正在获取第一个正在使用的非显示号码

我需要发出如下命令

Xvfb:6-屏幕 0 1024x768x24

其中 6 可以是显示器编号。现在 Xvfb 已经可以使用该显示器了,那么如何获取第一个未使用的显示器编号呢?

答案1

可能有更简单的方法,但我会编写一个脚本来查询显示内容信息

大致有 3 种情况:

  1. 显示存在,并且您的 shell 可以访问该显示。 信息将会吐出大量信息。

  2. 显示存在,并且你的 shell没有可以访问显示屏。 信息将会出现访问错误和无法打开的错误,如下所示:
    Invalid MIT-MAGIC-COOKIE-1 keyxdpyinfo: unable to open display ":0".

  3. 显示不存在。 信息将会弹出无法打开的错误:
    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。

相关内容