Каждый раз, когда программа запускается, ядро создает процесс, связанный с программой. Проще говоря, процесс – это запущенный экземпляр программы в Linux.
Процесс, созданный ядром, называется ‘Родительский процесс’. Процессы, производные или порожденные от родительского процесса, известны как ‘Дочерние процессы’. Родительский процесс может состоять из нескольких дочерних процессов, каждый из которых имеет уникальный PID (идентификатор процесса), но разделяет один и тот же PPID (идентификатор родительского процесса).
В этом руководстве мы рассмотрим различные способы, которые вы можете использовать для определения идентификаторов родительских процессов (PPIDs) или процессов в системе Linux.
Какая разница между PID и PPID?
A program that is loaded into memory and running is known as a process. Once started, the process is given a unique number known as the process ID (PID) that uniquely identifies it in the system. The process can be referred to at any time using its PID. For example, to kill a process, you will have to know its PID first.
Помимо PID, каждому процессу назначается идентификатор родительского процесса ID (PPID), который показывает, какой процесс породил его. Таким образом, PPID является PID процесса-родителя.
Чтобы разобраться в этом контексте, предположим, что процесс 5 с PID 5050 запускает процесс 6. Процессу 6 будет назначено уникальное PID например 6670, но все равно будет дано PPID 5050.
Родительский процесс здесь является процессом 5, а дочерний процесс – 6. Дочерний процесс назначается уникальный PID, но PPID такой же, как PID родительского процесса (процесс 5)
A single parent can start multiple several child processes, each with a unique PID but all sharing the same PPID.
Найти идентификатор родительского процесса (PPID) в Linux
Есть два основных подхода к поиску PPID работающего процесса в системе Linux:
- Использование команды pstree.
- Используя команду ps.
Найти PPID процесса Linux с помощью команды pstree
A pstree command is a command-line tool that displays running processes as a tree, which makes for a convenient way of displaying processes in a hierarchy. It shows the parent-child relationship in a tree hierarchy.
С помощью опции -p
, pstree отображает все запущенные родительские процессы вместе с соответствующими дочерними процессами и их PID.
$ pstree -p

Из вывода мы можем увидеть идентификаторы родительских процессов вместе с идентификаторами дочерних процессов.
Для демонстрации мы собираемся проверить PPID для Mozilla Firefox вместе с полной иерархией процессов, используя следующую команду:
$ pstree -p | grep 'firefox'

Из вывода вы можете увидеть, что PPID Firefox равен 3457, а остальные – PIDs дочерних процессов.
Чтобы отобразить только PPID Firefox и пропустить остальную часть вывода, перенаправьте вывод в команду head с -1
, чтобы отобразить первую строку.
$ pstree -p | grep 'firefox' | head -1

Найти PPID процесса Linux с помощью команды ps
Другой вариант нахождения PPID процесса – это команда ps, широко используемая команда, которая отображает текущие выполняющиеся процессы на системе Linux.
При использовании с опцией -ef
, команда ps выводит все запущенные процессы вместе с их деталями, такими как UID, PID, PPID и т.д.
$ ps -ef

Чтобы сузить поиск и отобразить PPID конкретного процесса, например, Firefox, передайте опцию -e
и пропустите вывод через команду grep как показано.
$ ps -e | grep 'firefox'

Опять же, из вывода вы можете видеть, что PPID Firefox равен 3457.
В этом руководстве мы продемонстрировали, как можно найти PPIDs процессов, работающих на системе Linux. Вы можете использовать либо команду pstree, либо команду ps для достижения одной и той же цели.