#!/bin/bash
# Рекурсивная функция для создания дерева процессов
create_tree() {
local depth=$1
local max_depth=$2
# Создаем отступ для красивой визуализации
local indent=$(printf '%*s' $((depth * 4)) '')
echo "${indent}├── Уровень $depth: PID=$$, PPID=$PPID"
if [ $depth -lt $max_depth ]; then
# Создаем два дочерних процесса (субшеллы) в фоновом режиме
( create_tree $((depth + 1)) $max_depth ) &
( create_tree $((depth + 1)) $max_depth ) &
wait # Ждем завершения дочерних процессов текущего уровня
else
sleep 5 # Держим процесс живым 5 секунд, чтобы вы успели посмотреть его в pstree
fi
}
echo "=== Начало построения иерархии ==="
echo "Родительский процесс: PID=$$, PPID=$PPID"
echo "⚠️ БЫСТРО откройте ДРУГОЙ терминал и выполните команду:"
echo " pstree -p -s $$"
echo " pgrep -a -f task3.sh"
echo "-----------------------------------"
create_tree 0 2
wait
echo "=== Иерархия процессов завершена ==="