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

Каждый раз, когда программа запускается, ядро создает процесс, связанный с программой. Проще говоря, процесс – это запущенный экземпляр программы в 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
Show Linux Running Processes in Tree Hierarchy

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

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

$ pstree -p | grep 'firefox'
Find the PPID of the Linux Process

Из вывода вы можете увидеть, что PPID Firefox равен 3457, а остальные – PIDs дочерних процессов.

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

$ pstree -p | grep 'firefox' | head -1
Print PPID of Linux Process

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

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

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

$ ps -ef
List Running Linux Processes with PID

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

$ ps -e | grep 'firefox'
Find Linux Process PID

Опять же, из вывода вы можете видеть, что PPID Firefox равен 3457.

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

Source:
https://www.tecmint.com/find-parent-process-ppid/