При работе на компьютере с Linux иногда вам может понадобиться выяснить, какие процессы запущены в данный момент. Есть несколько команд, которые вы можете использовать, чтобы найти информацию о запущенных процессах, ps и top являются наиболее часто используемыми из них.
В этой статье мы поговорим о pstreeкоманде. Это похоже на ps, но вместо перечисления запущенных процессов, он показывает их в виде дерева. Древовидный формат является более удобным способом отображения иерархии процессов и делает вывод более визуально привлекательным.
Общий синтаксис pstreeкоманды выглядит следующим образом:
ps [OPTIONS] [USER or PID]
В простейшей форме, когда вызывается без какой-либо опции или аргумента, pstreeотображает иерархическую древовидную структуру всех запущенных процессов:
pstree
systemd─┬─VBoxService───7*[{VBoxService}] ├─accounts-daemon───2*[{accounts-daemon}] ├─2*[agetty] ├─atd ├─cron ├─dbus-daemon ├─irqbalance───{irqbalance} ├─2*[iscsid] ├─lvmetad ├─lxcfs───2*[{lxcfs}] ├─networkd-dispat───{networkd-dispat} ├─nginx───2*[nginx] ...
Верхний/корневой элемент в дереве является родительским процессом всех системных процессов. В этом примере systemd является первым процессом, который запускается при загрузке.
pstree объединяет идентичные ветви, помещая их в квадратные скобки и добавляя к ним целое число, представляющее количество ветвей. Это делает вывод более читабельным и визуально привлекательным.
Ниже приведен пример, показывающий, как используются квадратные скобки:
├─2*[agetty]
такой же как:
├─agetty ├─agetty
Чтобы отключить объединение идентичных веток, используйте параметр -c:
pstree -c
Потоки процесса отображаются под родительским процессом и отображаются с использованием имени процесса в фигурных скобках. Вот пример:
├─lxcfs───2*[{lxcfs}]
Используйте опцию -t, чтобы показать полные имена потоков. Если вы хотите скрыть темы и показать только процессы, используйте эту опцию -T.
Как правило pstree отображает много строк вывода, которые не помещаются на экране. Чтобы просмотреть выходные данные по одной странице за раз, передайте ее команде less:
pstree | less
Если в качестве аргумента указано имя пользователя, pstree отображаются только процессы, принадлежащие этому пользователю. Например, следующая команда покажет только те процессы, которые были запущены пользователем с именем «andreyex»:
pstree andreyex
Когда в качестве аргумента указан PID, pstree отображается дерево с заданным процессом в качестве корня дерева. Вот пример:
pstree 1943
sshd───bash───pstree
Чтобы показать родительские процессы данного процесса, используйте параметр -s, за которым следует PID процесса:
pstree -s 1943
systemd───sshd───sshd───bash───pstree
Обычно при запуске команды pstree наиболее важной информацией, которую ищет пользователь, является идентификатор процесса. Например, знание PID позволяет уничтожить сбойный процесс.
-p инструктирует pstree показать PID:
pstree -p
PID указаны в скобках после каждого процесса или потока.
systemd(1)─┬─VBoxService(955)─┬─{VBoxService}(956) │ ├─{VBoxService}(957) │ ├─{VBoxService}(958) │ ├─{VBoxService}(959) │ ├─{VBoxService}(960) │ ├─{VBoxService}(961) │ └─{VBoxService}(962) ...
По умолчанию pstree – это сортировка процессов с одним и тем же родителем по имени. Опция -n указывает pstree использовать числовую сортировки, т.е. сортировка по PIDs:
pstree -pn
Идентификатор группы процессов или идентификаторы PGID – это идентификаторы процесса первого члена группы процессов. Для просмотра PGID используйте опцию -g:
pstree -g
PID также отображаются в скобках после каждого процесса или потока.
systemd(1)─┬─VBoxService(954)─┬─{VBoxService}(954) │ ├─{VBoxService}(954) │ ├─{VBoxService}(954) │ ├─{VBoxService}(954) │ ├─{VBoxService}(954) │ ├─{VBoxService}(954) │ └─{VBoxService}(954) ...
Когда отображаются PID или PGID, объединение неявно отключается.
Некоторые программы могут быть вызваны с параметрами конфигурации, указанными в качестве аргументов командной строки.
По умолчанию команда pstree не показывает аргументы командной строки для запущенных процессов. Чтобы увидеть, как процесс был запущен, используйте команду вместе с опцией -a:
pstree -a
... ├─agetty -o -p -- \\u --keep-baud 115200,38400,9600 ttyS0 vt220 ├─agetty -o -p -- \\u --noclear tty1 linux ...
pstree также позволяет выделить процессы для лучшего визуального представления.
-h инструктирует pstree выделить текущий процесс и все его предки.
pstree -h
Чтобы выделить конкретный процесс, используйте параметр -H, за которым следует идентификатор процесса:
pstree -H PID_NUMBER
Если выделение не поддерживается, команда завершится с ошибкой.
Команда pstree отображает запущенные процессы в виде древовидной структуры. Для получения информации обо всех доступных опциях pstree введите man pstree в свой терминал.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.