Não conheço uma maneira fácil de resolver o mapeamento de /dev/ttyNN to $DISPLAY . No entanto, isso é possível. No meu sistema baseado em Debian, isso retornará o local DISPLAY value :0 para uma sessão X em execução em /dev/tty7 :
xtty=/dev/tty7
xpid=$(lsof "$xtty" 2>/dev/null | awk '$1 == "Xorg" {print $2}')
test -n "$xpid" && ps -fp "$xpid" | awk '$2 == xpid {print $9}' xpid="$xpid" # → :0
Os estágios intermediários são os seguintes.
-
O
lsofretorna todos os processos abertos no terminal tty fornecido. Oawkseleciona o ID do processo para o processo denominadoXorg. YMMV se você não estiver executando esse servidor de exibição X em particular.lsof /dev/tty7 2>/dev/null COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Xorg 695 root 8u CHR 4,7 0t0 1059 /dev/tty7 -
A combinação
ps | awkfornece detalhes suficientes do processoXorgcorrespondente para entregar o nomeDISPLAY:ps -fp 695 UID PID PPID C STIME TTY TIME CMD root 695 639 0 Jan23 tty7 00:01:44 /usr/bin/X :0 -seat seat0 -auth /var/run/lightdm