Как найти PPID родительского процесса в Linux

Каждый раз, когда выполняется программа, ядро создает процесс, связанный с этой программой. Проще говоря, процесс – это запущенный экземпляр программы в Linux.

Процесс, созданный ядром, называется Родительский процесс. Процессы, производные или порожденные от родительского процесса, известны как Дочерние процессы. Родительский процесс может состоять из нескольких дочерних процессов, каждый из которых имеет уникальный PID (Process ID), но разделяет один и тот же PPID.

В чем разница между PID и PPID?

Программа, загруженная в память и запущенная, называется процессом. После запуска процессу присваивается уникальный номер, известный как идентификатор процесса (PID), который однозначно идентифицирует его в системе. На процесс можно ссылаться в любое время, используя его PID. Например, чтобы убить процесс, нужно сначала узнать его PID.

В дополнение к PID каждому процессу присваивается ID родительского процесса (PPID), который показывает, какой процесс его породил. Таким образом, PPID – это PID родителя процесса.

Чтобы показать это в контексте, предположим, что процесс 5 с PID 5050 запускает процесс 6. Процессу 6 будет присвоен уникальный PID, например 6670, но ему все равно будет присвоен PPID 5050.

Родительским процессом здесь является процесс 5, а дочерним – 6. Дочернему процессу присвоен уникальный PID, но PPID такой же, как PID родительского процесса (процесс 5)

Один родительский процесс может запускать несколько дочерних процессов, каждый из которых имеет уникальный PID, но все они разделяют один и тот же PPID.

Поиск идентификатора родительского процесса (PPID) в Linux

Существует два основных подхода к поиску PPID запущенного процесса в системе Linux:

  • Использование команды pstree.
  • Использование команды ps.

Поиск PPID процесса Linux с помощью команды pstree

Команда pstree – это инструмент командной строки, который отображает запущенные процессы в виде дерева, что делает его удобным способом отображения процессов в иерархии. Она показывает отношения родитель-ребенок в древовидной иерархии.

С опцией -p команда pstree отображает все запущенные родительские процессы вместе с соответствующими дочерними процессами и соответствующими PID.

pstree -p

Как найти PPID родительского процесса в Linux

В результате мы можем увидеть идентификаторы родительских процессов вместе с идентификаторами дочерних процессов.

Для демонстрации мы собираемся проверить PPID для Mozilla Firefox вместе со всей иерархией процессов с помощью следующей команды:

pstree -p | grep 'firefox'

Как найти PPID родительского процесса в Linux
Из вывода видно, что PPID Firefox равен 3457, а остальные PID дочерних процессов.

Чтобы отобразить только PPID Firefox и пропустить остальной вывод, передайте вывод команде head с -1 для отображения первой строки.

pstree -p | grep 'firefox' | head -1

Как найти PPID родительского процесса в Linux

Поиск PPID процесса Linux с помощью команды ps

Другим вариантом поиска PPID процесса является команда ps, которая широко используется для отображения запущенных процессов в системе Linux.

При использовании опции -ef команда ps выводит список всех запущенных процессов вместе с их деталями, такими как UID, PID, PPID и т.д.

ps -ef

Как найти PPID родительского процесса в Linux

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

ps -e | grep 'firefox'

Как найти PPID родительского процесса в Linux

И снова, из вывода видно, что PPID Firefox равен 3457.

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

Комментарии (0)