При работе на компьютере с 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
имя пользователя, 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
ID группы процессов или PGID — это ID процесса первого члена группы процессов. Для просмотра 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
отображает запущенные процессы в виде древовидной структуры.
Добавить комментарий