Введение
При работе на машине с Linux иногда может быть необходимо узнать, какие процессы запущены в данный момент. Существует ряд команд, которые вы можете использовать для поиска информации о запущенных процессах, наиболее часто используемыми являются команды ps
и top
.
В этой статье мы поговорим о команде pstree
. Он похож на ps
, но вместо списка запущенных процессов показывает их в виде дерева. Древовидный формат является более удобным способом просмотра иерархии процессов и делает вывод более привлекательным.
Если вы хотите использовать команду Pstree на удаленном сервере, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти в систему с другим именем пользователя, используя ту же команду, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Как использовать команду pstree
Общий синтаксис команды pstree
следующий:
ps [OPTIONS] [USER or PID]
В своей простейшей форме при вызове без каких-либо опций или аргументов pstree
отображает иерархическую древовидную структуру всех запущенных процессов.
В Debian и производных дистрибутивах он уже должен быть установлен по умолчанию, в противном случае выполните эту команду:
sudo apt-get install psmisc
Чтобы установить его на CentOS/RHEL, введите следующую команду:
sudo yum install psmisc
Чтобы использовать команду без каких-либо параметров, просто введите 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
показывает только процессы, принадлежащие этому пользователю. Например, следующая команда покажет только те процессы, которые были запущены пользователем noviello:
pstree noviello
Когда 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
позволяет использовать числовую сортировку, т.е. сортировку по PID:
pstree -pn
PGID или идентификатор группы 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
.
man pstree