Иногда я сталкиваюсь с некоторыми проблемами при отображении, и в основном я хочу знать, какие файлы или процессы используют переменную окружения DISPLAY.
Так как же перечислить все процессы, для которых установлен DISPLAY?
Иногда я сталкиваюсь с некоторыми проблемами при отображении, и в основном я хочу знать, какие файлы или процессы используют переменную окружения DISPLAY.
Так как же перечислить все процессы, для которых установлен DISPLAY?
Я пришел к этой команде после многих поисков и попыток:
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)
DISPLAY
каждого файла. Эти файлы в действительности выполняются процессами, поэтому каждый файл, содержащий слово,DISPLAY
означает, что этот процесс использует его. Вы не можете получить полное имя процесса, так как имена в выводе являются именами основанных файлов,/proc
поэтому вы просто не можете знать больше, чем предлагается.Небольшой модификацией скрипта Maythux мы также можем получить PID процессов, используя переменную DISPLAY.
Выход:
источник
Вот некоторые изящные скрипты командной строки! Я собираюсь сделать копию этого сценария на случай, если мне придется взломать его, чтобы придумать что-то еще.
В идеале все текущие процессы, которые соответствуют программам, которые вы выполняете на локальном компьютере, после входа в систему, должны иметь ту же переменную отображения, что и ваша первая открытая консоль pts (псевдо-терминал).
Например, когда вы открываете свой первый сеанс терминала (gnome-терминал) и запускаете команду who или w, вы заметите некоторый вывод:
или некоторые люди могут выглядеть так (но не ваш случай)
с помощью диспетчера отображения света, если переменная DISPLAY установлена по-разному для выполнения оболочек после входа в систему (например, 0.0), тогда переменная среды для DISPLAY выдаст ту же переменную отображения, что и переменная отображения после входа первых открытых точек (: 0.0), но переменная хоста при входе в систему все равно будет (: 0).
Повторяя переменную DISPLAY или запустив set piped на less, как показано ниже:
или
Вы также можете проверить текущую переменную отображения ваших сеансов и посмотреть, на что она установлена, для выполнения оболочек после входа в систему. Таким образом, в основном переменная отображения процессов, которые вы выполняете, будет иметь ту же переменную отображения, что и ваши первые открытые точки, после входа в систему.
Вывод сценария, который вы опубликовали, предполагает, что ваши первые открытые точки будут иметь ту же переменную отображения, что и логин вашего диспетчера отображения, в данном случае: 0.
Теперь для второго примера вывод будет выглядеть примерно так:
Также для дополнительного чтения вы можете посмотреть справочные страницы для ptmx
Это может дать вам некоторое представление о взаимоотношениях мастер-раб псевдо-терминалов.
Надеюсь, это поможет!
Кроме того, где вы взяли этот сценарий?
источник