Как знать, какие процессы переменная ДИСПЛЕЯ установила?

Иногда я сталкиваюсь с некоторыми проблемами в дисплее, и главным образом я действительно хочу знать, какие файлы или процессы используют переменную среды ДИСПЛЕЯ.

Таким образом, как перечислить все процессы это устанавливающее ДИСПЛЕЙ?

8
задан 11 March 2014 в 12:48

3 ответа

Я подошел к этой команде после многих поисков и попыток:

for file in /proc/[0-9]*; do grep -ao 'DISPLAY=[^[:cntrl:]]*' $file/environ 2>/dev/null && grep -ao '(.*)' $file/stat; done | sed 'N;s/\n/\t/'

образец А вывода:

DISPLAY=:0  (unity-files-dae)
DISPLAY=:0  (unity-music-dae)
DISPLAY=:0  (unity-lens-vide)
DISPLAY=:0  (zeitgeist-daemo)
DISPLAY=:0  (zeitgeist-fts)
DISPLAY=:0  (zeitgeist-datah)
DISPLAY=:0  (cat)
DISPLAY=:0  (unity-scope-vid)
DISPLAY=:0  (unity-musicstor)
DISPLAY=:0  (dconf-service)
DISPLAY=:0  (gdu-notificatio)
DISPLAY=:0  (telepathy-indic)
DISPLAY=:0  (mission-control)
DISPLAY=:0  (goa-daemon)
DISPLAY=:0  (VBoxXPCOMIPCD)
13
ответ дан 16 November 2019 в 16:53

Thats некоторые довольно изящные сценарии командной строки! Я собираюсь делать копию в том сценарии в случае, если я должен взломать его для расчета чего-то еще.

Идеально все текущие процессы, которые соответствуют программам, которые Вы выполняете на локальной машине, входе в систему сообщения, собираются нести ту же переменную дисплея как Ваш первый открытый pts (сессия псевдотерминала) консоль.

, Например, когда Вы открываете свой первый терминальный сеанс (терминал гнома) и работаете, кем или w управляют, Вы заметите некоторый вывод как это:

$ who

yourusername   :0        2015-06-08 14:05 (:0)
yourusername   pts/0     2015-06-08 14:22 (:0)

или некоторые люди мог бы быть похожим на это (но не это Ваш случай)

yourusername   :0        2015-06-08 14:05 (:0)
yourusername   pts/0     2015-06-08 14:22 (:0.0)

использование легкого менеджера по оформлению, если переменная ДИСПЛЕЯ установлена по-другому для выполнения входа в систему сообщения оболочек (например:0.0), то переменная среды для ДИСПЛЕЯ привела бы к той же переменной дисплея как переменная дисплея поствхода в систему первого открытого pts (:0.0), но host-переменная, при входе в систему, все еще будет (:0).

Путем повторения переменной ДИСПЛЕЯ или выполнения набора, переданного по каналу к меньше как показано ниже:

:~$ echo $DISPLAY

или

:~$ set | less

можно также проверить сессии текущая переменная дисплея и видеть то, что она установлена на для выполнения входа в систему сообщения оболочек. Так в основном переменная дисплея процессов Вы выполняетесь, собираются иметь ту же переменную дисплея как Ваш первый открытый pts, отправлять вход в систему.

вывод сценария, который Вы отправили, предполагает, что Ваш первый открытый pts будет иметь ту же переменную дисплея как вход в систему Вашего менеджера по оформлению, в этом случае:0.

Теперь для второго примера вывод выглядел бы примерно так:

DISPLAY=:0.0    (gvfs-udisks2-vo)
DISPLAY=:0.0    (zeitgeist-daemo)
DISPLAY=:0.0    (zeitgeist-fts)
DISPLAY=:0.0    (zeitgeist-datah)
DISPLAY=:0.0    (gvfs-mtp-volume)
DISPLAY=:0.0    (gvfs-gphoto2-vo)
DISPLAY=:0.0    (gvfs-afc-volume)
DISPLAY=:0.0    (geyes_applet2)
DISPLAY=:0.0    (indicator-apple)
DISPLAY=:0.0    (cat)
DISPLAY=:0.0    (python)
DISPLAY=:0.0    (gvfsd-trash)
DISPLAY=:0.0    (indicator-keybo)
DISPLAY=:0.0    (gvfsd-burn)
DISPLAY=:0.0    (cat) 
DISPLAY=:0.0    (cat)
DISPLAY=:0.0    (gnome-terminal)
DISPLAY=:0.0    (bash)
DISPLAY=:0.0    (bash)
DISPLAY=:0.0    (sed)

Также для дополнительного чтения можно посмотреть на страницы справочника для ptmx

$ man ptmx

, Это могло бы предоставить Вам некоторое понимание отношений "главный-подчиненный" псевдотерминалов.

я надеюсь, что это помогает!

Также, где Вы получали тот сценарий в?

0
ответ дан 16 November 2019 в 16:53

С маленькой модификацией к сценарию Maythux мы можем также получить PID процессов с помощью переменной ДИСПЛЕЯ.

for file in /proc/[0-9]*; do grep -ao 'DISPLAY=[^[:cntrl:]]*' $file/environ 2>/dev/null && grep -ao '[0-9]* (.*)' $file/stat; done | sed 'N;s/\n/\t/' |column -t |sort -n -k2

Вывод:

DISPLAY=:0  590    (lxsession)
DISPLAY=:0  645    (unclutter)
DISPLAY=:0  705    (gvfsd)
DISPLAY=:0  710    (gvfsd-fuse)
DISPLAY=:0  727    (openbox)
DISPLAY=:0  729    (lxpolkit)
DISPLAY=:0  732    (lxpanel)
DISPLAY=:0  734    (pcmanfm)
DISPLAY=:0  772    (menu-cached)
DISPLAY=:0  781    (gvfs-udisks2-vo)
DISPLAY=:0  791    (gvfs-gphoto2-vo)
DISPLAY=:0  795    (gvfs-mtp-volume)
DISPLAY=:0  799    (gvfs-afc-volume)
DISPLAY=:0  804    (gvfs-goa-volume)
DISPLAY=:0  816    (gvfsd-trash)
DISPLAY=:0  21053  (npm)
DISPLAY=:0  21102  (sh)
DISPLAY=:0  21103  (sh)
DISPLAY=:0  21104  (node)
DISPLAY=:0  21110  (electron)
DISPLAY=:0  21112  (electron)
DISPLAY=:0  21149  (electron)
DISPLAY=:0  21154  (electron)
DISPLAY=:0  21180  (rec)
1
ответ дан 23 November 2019 в 05:31

Другие вопросы по тегам:

Похожие вопросы: