Из X (7) справочных страниц
DISPLAY NAMES
From the user's perspective, every X server has a display name of the form:
hostname:displaynumber.screennumber
[...]
displaynumber
[...]
To avoid confusion, each display on a machine is assigned a display
number (beginning at 0) when the X server for that display is started.
Как я могу найти номер дисплея, который мне назначен?
Или список открытых в данный момент дисплеев и их пользователей?
;
передdone
.В сеансе X вы всегда можете обратиться к
DISPLAY
переменной среды, чтобы узнать текущий номер дисплея (echo $DISPLAY
).Узнать номера показа других людей сложнее. Я не думаю, что существует какой-либо стандартный способ получения информации, кроме как опросить всех пользователей, с которыми они связаны, поэтому любая попытка получить эту информацию требует некоторого рода хакерских действий и не будет работать во всех случаях.
В SE есть несколько опций, но они не будут работать, например, в Debian Wheezy. Однако перечислить активные в данный момент дисплеи очень просто, как показано в посте, на который я ссылался выше:
ps axu | grep "X "
покажет вам запущенные в данный момент процессы X, что-то вроде следующего:Первый параметр после
/usr/bin/X
- это номер дисплея с префиксом двоеточия, а следующий показывает виртуальный терминал, назначенный сеансу.Вы можете получить ответ, посмотрев на список процессов, хотя:
ps axu |grep -3 "X "
Посмотрите на строки после
/usr/bin/X
- когда начинается сеанс X, оконный менеджер обычно запускается как пользователь, которому принадлежит сеанс, и там вы получаете имя пользователя. В моем случае user_1 использует KDE, а user_2 использует LXDE. Однако это решение основано исключительно на том факте, что ядро назначает новые идентификаторы процесса в возрастающей последовательности, что может быть не всегда.источник
/proc/$pid/environ
, как вcat /proc/$$/environ | tr '\0' '\n' | grep '^DISPLAY='
. Смотрите мой ответ для другого примера использования.Этот ответ содержит однострочник, основанный на
who
& grep/ubuntu//a/230838/152287
who
может быть сокращено какw
Вы можете прочитать больше по ссылке, включая одну строку, чтобы получить значение.
Оно работает. Вот вывод raspberrypi (rasbian), где отображаемое значение находится в столбце ОТ
источник
https://gitorious.org/termsql/pages/Home
termsql
хороший инструмент для извлечения такой информации.Выяснение номера DISPLAY является одним из примеров:
(установите для переменной окружения DISPLAY значение, на котором сейчас работает дисплей X, при условии, что вызывается двоичный файл X
Xorg.bin
)источник
Небольшая вариация ответа Амира.
ps e
будет выводить среду каждой команды, разделенную пробелами, так что ее можно будет передать напрямую дляsed
фильтрации DISPLAY, предоставляя более простую команду, чем непосредственное чтение / proc / PID / environment. (Тем не менее, для чтения окружений других пользователей вам все еще нужны права суперпользователя.)Этот код выведет имена всех вошедших в систему пользователей с X-сессиями и их номера DISPLAY:
источник