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