
При работе на компьютере с 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 покажет только процессы, принадлежащие этому пользователю. Например, следующая команда покажет только те процессы, которые были запущены пользователем «linuxize»:
pstree linuxize
Если 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 использовать числовую сортировку, то есть сортировку по PID:
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 в терминале.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства