Я не знаю простого способа решить сопоставление / dev / ttyNN
в $ DISPLAY
]. Однако это возможно. В моей системе на основе Debian это вернет локальное DISPLAY
значение : 0
для X-сеанса, запущенного на / 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
Промежуточные этапы: следующее.
lsof
возвращает все процессы, открытые на данном терминале tty. awk
выбирает идентификатор процесса для процесса с именем Xorg
. YMMV, если вы не используете этот конкретный сервер отображения X.
lsof / dev / tty7 2> / dev / null
КОМАНДА PID ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛ ИМЯ УЗЛА
Xorg 695 root 8u CHR 4,7 0t0 1059 / dev / tty7 { {1}}
пс | Комбинация awk
предоставляет достаточную информацию о согласованном процессе Xorg
для доставки DISPLAY
имя:
ps -fp 695
UID PID PPID C STIME TTY TIME CMD
root 695 639 0 января 23 tty7 00:01:44 / usr / bin / X: 0 -seat seat0 -auth / var / run / lightdm