Список процессов Linux, имеющих Windows

1140
dronus

Как я могу перечислить процессы Linux (как ps aux), но только те, которые имеют окна X11?

Я предполагаю, что между процессами и X-сервером должна быть какая-то простая связь (как всегда в linux). Это подвергается lsof?

4

2 ответа на вопрос

4
TOOGAM

xwininfo -tree -root | grep -v "не имеет имени" | grep -v child
Это немного другой подход, чем тот, который вы просили: вместо того, чтобы перечислять процессы, он перечисляет окна. Если вы ищете список идентификаторов процессов, это не решает задачу. Если вы ищете список того, что работает, это делает.

Очевидно, что этот подход не покажет вам название любой программы, в которой в качестве имени указано «child». Тем не менее, если вы ищете быстрый и простой вариант, который будет служить большинству целей, это может быть один.

Да, и, кстати, есть ряд других опций для xwininfo, например, возможность указать имя только одного окна (вместо указания корневого окна).

Кроме того, вы можете использовать команду `xlsclients`, которая имеет аналогичную функциональность. Если вам нужно преобразовать идентификаторы окон X11 в PID, взгляните на спецификацию NetWM (иначе EWMH). Совместимые клиенты могут установить `_NET_WM_PID` Atom, который можно прочитать с помощью утилиты` xprop`, если вы знаете идентификатор окна. Bass 9 лет назад 0
1
MariusMatutiae

Я не совсем понимаю, что вы имеете ввиду. Скорее всего, команда, которую вы хотите использовать

 ps alx | grep pts 

Вам понадобится longфлаг для psотображения одиннадцатого столбца, который идентифицирует терминал процесса, если таковой имеется.

Тем не менее, вы также можете увидеть ту же информацию в другом формате, с помощью pstreeкоторого ...

pstree показывает запущенные процессы в виде дерева. Дерево имеет корень либо в pid, либо в init, если pid опущен.

При этом вы можете выполнить поиск Desktop Manager (в моем случае kdm), а затем увидеть из этого все процессы, происходящие из этого, включая те, которые вы начинаете как ssh-соединение. Если вы используете -pфлаг, вам будут даны номера процессов,

 ├─konsole(2716)─┬─bash(2739)───ssh(8328) │ └─(2738) 

который позволяет вам проверить, что номер процесса для sshпроцесса такой же, как в выводе ps alx. Но это не показывает, AFAIK, tty, в котором была выполнена команда.

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