Как узнать активный номер сервера XOrg DISPLAY (снаружи)

for p in $(pgrep -t $(cat /sys/class/tty/tty0/active)); do d=$(awk -v RS='\0' -F= '$1=="DISPLAY" {print $2}' /proc/$p/environ 2>/dev/null); [[ -n $d ]] && break; done; echo $d


Эта команда позволяет узнать активный номер сервера Xorg display снаружи, то есть из другого процесса или сценария.

Описывая детали выполнения команды, она последовательно выполняет следующие действия:

1. pgrep -t $(cat /sys/class/tty/tty0/active) — находит идентификаторы процессов, связанных с активным терминалом (tty0).
2. $(...) — выражение возвращает результат выполнения команды внутри скобок (идентификаторы процессов).
3. for p in $(...) — цикл, выполняющийся для каждого идентификатора процесса, полученного в предыдущем шаге.
4. awk -v rs='\0' -f= '$1=="display" {print $2}' /proc/$p/environ 2>/dev/null — для каждого процесса, считывает переменную окружения display из файла /proc//environ и выводит ее значение.
awk — используется для обработки текстовых данных.
-v rs='\0' — определяет разделитель записей в awk как символ с кодом 0, что позволяет обрабатывать значения переменных окружения, разделенных символом NULL.
'$1=="display" {print $2}' — проверяет, является ли первое поле строки переменной окружения display и, если это так, выводит второе поле (значение).
/proc/$p/environ — путь к файлу, содержащему переменные окружения для каждого процесса.
2>/dev/null — перенаправляет сообщения об ошибках в никуда, чтобы предотвратить их отображение в выводе.
5. [[ -n $d ]] && break — проверяет, имеет ли переменная $d ненулевую длину (есть ли значение), и если это так, останавливает цикл.
6. echo $d — выводит значение переменной $d, которое является активным номером сервера Xorg display.

Эта команда полезна для автоматизации процесса определения активного номера сервера Xorg display извне, что может быть полезно, например, при написании скрипта, требующего взаимодействия с графическими приложениями, работающими на сервере Xorg display.

Альтернативным способом может быть использование утилиты xdpyinfo, которая также позволяет получить информацию о сервере Xorg display, но в более прямой и удобочитаемой форме.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *