pstree: визуализация процессов Linux в виде дерева

Что такое pstree?
pstree — утилита, которая показывает процессы в виде дерева: родительские процессы — «ствол», дочерние — «ветви». Это помогает понять, как процессы связаны друг с другом и от какого процесса они произошли. Коротко: init (на большинстве современных дистрибутивов — systemd) является общим предком всех процессов.
Установка pstree на Linux
pstree входит в набор утилит psmisc и часто уже установлен. Если его нет, установите через пакетный менеджер вашей системы.
Для Debian / Ubuntu:
sudo apt update
sudo apt install psmiscДля Arch Linux:
sudo pacman -S psmiscДля дистрибутивов на базе Red Hat / Fedora:
sudo dnf install psmiscПроверить наличие можно командой:
which pstree && pstree --versionВажно: имя пакета — psmisc; сам исполняемый файл называется pstree.
Как использовать pstree для просмотра процессов
Базовый запуск
Просто выполните:
pstreeВы увидите дерево всех процессов в системе. Родительские процессы идут слева, их дочерние процессы — справа.
Показать процессы конкретного пользователя
Чтобы увидеть процессы, принадлежащие конкретному пользователю, укажите его имя:
pstree rootПоказать идентификаторы процессов (PID)
Опция -p выводит PID рядом с именем процесса:
pstree -pПодсветка текущего процесса
Чтобы выделить вашу текущую оболочку (или процесс, в котором вы находитесь), используйте -h:
pstree -hЕсли нужно подсветить конкретный PID, используйте заглавную H и число PID:
pstree -H 1234Цветовая кодировка по возрасту процесса
Опция -C вместе с ключом age создаёт цветовую маркировку по возрасту процесса. Значение age — текущая метка для расчёта цвета:
pstree -C ageПринцип простой: процессы, созданные в последние 60 секунд — зелёные; процессы, запущенные около часа назад — жёлтые; более старые процессы — красные. Это помогает быстро заметить недавно созданные демоны или порожденные процессы.
Полезные флаги и сочетания (шпаргалка)
- pstree -p — показать PID для каждого процесса
- pstree -a — показать аргументы процессов (командную строку)
- pstree -u — показать пользователей рядом с процессами
- pstree -A — использовать ASCII-символы для рисунка дерева (если окружение не поддерживает UTF-8)
- pstree -g — показать группы процессов
- pstree -n — сортировка по PID (упорядочить дочерние процессы)
Комбинации:
pstree -ap # PID + аргументы
pstree -pun # PID + пользователи + сортировкаСовет: если вывод слишком широк, перенаправьте его в less:
pstree -ap | less -SАльтернативы и когда pstree не подходит
- ps –forest: если вам нужна одна строка с подробной информацией о конкретных полях (UID, PID, PPID, CMD), ps с опцией –forest даст похожее дерево, но в формате ps.
- htop/htop — интерактивные мониторы процессов с возможностью сортировки по нагрузке, памяти и CPU; но htop показывает менее наглядную иерархию процесса в виде списка.
- pgrep/pgrep -P — для поиска дочерних процессов по PID.
Когда pstree не подойдёт:
- Если нужно мониторить использование CPU/памяти в реальном времени — используйте top/htop/atop.
- Если требуется подробный отчёт по открытым файлам/сокетам — используйте lsof или ss.
Диагностика проблем и подсказки (когда вывод пустой или неполный)
- Если pstree показывает неожиданно мало процессов, проверьте права: некоторые процессы, принадлежащие другим пользователям, могут быть скрыты в ограниченных сессиях.
- На контейнерах PID 1 может быть специфичным (например, tini или systemd внутри контейнера), поэтому корневая иерархия будет отличаться от хоста.
- В средах с chroot или в контейнерах procfs может быть смонтирован по-другому — проверьте /proc.
Важно: поведение pstree зависит от /proc; если файловая система /proc недоступна или смонтирована с ограничениями, вывод может быть неполным.
Рольно-ориентированный чеклист
Системному администратору:
- Установить psmisc и проверить pstree –version
- Использовать pstree -p для сопоставления PID и процессов
- При расследовании процессов использовать pstree -ap и lsof
Разработчику:
- Смотреть дерево пользовательских процессов (pstree $USER)
- Подсвечивать текущую сессию (-h) при отладке форков
- Сравнивать вывод с ps для проверки аргументов запуска
SRE / Инженеру поддержки:
- Использовать pstree -C age для поиска всплесков новых процессов
- Включать сортировку и аргументы (-pun) при анализе автоматических запусков
Модель принятия решения (mermaid)
flowchart TD
A[Нужно увидеть иерархию процессов?] -->|Да| B[pstree]
A -->|Нет| C[Использовать ps/htop/lsof]
B --> D{Нужны PID?}
D -->|Да| E[pstree -p]
D -->|Нет| F[pstree]
E --> G{Нужны аргументы и пользователи?}
G -->|Да| H[pstree -apun]
G -->|Нет| I[Просмотр дерева]Критерии приёмки
- pstree установлен и запускается без ошибок (pstree –version возвращает код 0).
- Вывод содержит ожидаемые процессы и их PID при использовании -p.
- Подсветка -h выделяет текущую оболочку.
- Цветовая маркировка -C age визуально различает недавно созданные процессы.
Короткий глоссарий
- PID — идентификатор процесса (Process ID).
- init/systemd — корневой процесс, предок всех процессов в системе.
- procfs (/proc) — виртуальная файловая система, где хранится информация о процессах.
Итог
pstree — простая и наглядная утилита для понимания иерархии процессов в Linux. Она отлично дополняет ps и htop, когда нужно быстро увидеть, какие процессы породили другие. Используйте опции -p, -h, -C и сочетания флагов для гибкой отладки и мониторинга.
Примечание: pstree полагается на /proc; в контейнерных средах и при нестандартном монтировании procfs поведение может отличаться.
Похожие материалы
Списки контактов на iPhone — создание и управление
Многозадачность и жесты iPadOS
Nest.js CRUD с TypeORM и PostgreSQL
Конвертация прямой ссылки в торрент
Распечатать контакты Gmail — быстро и безопасно