Иногда я сталкиваюсь с некоторыми проблемами в дисплее, и главным образом я действительно хочу знать, какие файлы или процессы используют переменную среды ДИСПЛЕЯ.
Таким образом, как перечислить все процессы это устанавливающее ДИСПЛЕЙ?
Я подошел к этой команде после многих поисков и попыток:
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)
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
, Это могло бы предоставить Вам некоторое понимание отношений "главный-подчиненный" псевдотерминалов.
я надеюсь, что это помогает!
Также, где Вы получали тот сценарий в?
С маленькой модификацией к сценарию 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)