如何确定 X 是否在 Debian 机器上的给定 TTY 上运行,并在这种情况下检索显示编号(DISPLAY 的值)?
编辑:TTY 可能是非活动控制台,不一定是活动控制台。我正在尝试实现该功能
Display()
{
local tty="$1"
...
}
Run Code Online (Sandbox Code Playgroud)
您可以按进程名称搜索。然后查看进程打开的unix域套接字(可能是抽象的)以确定显示编号。
pid=$(pgrep -xt "$tty" Xorg) &&
lsof -aUp "$pid" | sed '\|.*X11-unix/X\([0-9]\{1,\}\) .*|!d;s//\1/;q'
Run Code Online (Sandbox Code Playgroud)
那lsof必须以root身份运行。
或者,如果它始终存在,您可以从命令行参数中提取显示编号:
pgrep -axt "$tty" Xorg | sed -n 's/.*:\([0-9]\{1,\}\).*/\1/p'
Run Code Online (Sandbox Code Playgroud)