При работе на компьютере с Linux иногда вам может понадобиться выяснить, какие процессы запущены в данный момент. Есть несколько команд, которые вы можете использовать, чтобы найти информацию о запущенных процессах, ps и top являются наиболее часто используемыми из них.
В этой статье мы поговорим о pstreeкоманде. Это похоже на ps, но вместо перечисления запущенных процессов, он показывает их в виде дерева. Древовидный формат является более удобным способом отображения иерархии процессов и делает вывод более визуально привлекательным.
Как использовать команду pstree
Общий синтаксис 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
Показать PID и PGID
Обычно при запуске команды 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 в свой терминал.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Редактор: AndreyEx
Поделиться в соц. сетях: