Короткий ответ
PID (Process ID) — уникальный идентификатор процесса, PPID (Parent PID) — идентификатор процесса, который его породил; узнать родителя можно командой ps -o pid,ppid,cmd -p PID или построив дерево через pstree.
Как это работает подробнее
При создании нового процесса системный вызов fork() копирует вызывающий процесс, а exec() заменяет его образ новой программой; PPID сохраняется и указывает, кто инициировал запуск, формируя иерархическое дерево процессов вплоть до init/systemd с PID 1.
Пример кода
commands.sh
pstree -p 1234
ps -o pid,ppid,cmd -p 1234Что использовать на практике
- Практика. дерево процессов помогает понять, кто перезапускает «зависающий» сервис (например, systemd или супервизор), а также безопасно останавливать именно нужную ветку процессов, а не убивать всё по имени.
Подводные камни
- Риск. Частая ошибка — считать, что PID сохраняется при перезапуске сервиса: systemd и большинство супервизоров выдают процессу новый PID при каждом старте, поэтому скрипты не должны жёстко хардкодить PID.