Команда Pstree в Linux

При работе на компьютере с 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 отображает запущенные процессы в виде древовидной структуры.

Для получения информации обо всех доступных параметрах pstree введите в терминале man pstree .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий