#!/bin/bash
# Функция для долгоживущего процесса с обработкой сигналов
long_running_process() {
local id=$1
# Обработка сигналов
trap 'echo "Процесс $id получил SIGTERM, завершаюсь"; exit 0' TERM
trap 'echo "Процесс $id получил SIGSTOP, приостановлен"; kill -STOP $$' USR1
trap 'echo "Процесс $id получил SIGCONT, возобновлен"; kill -CONT $$' USR2
echo "Процесс $id запущен (PID: $$)"
# Бесконечный цикл с периодическим выводом
while true; do
echo "Процесс $id работает..."
sleep 2
done
}
echo "=== Запуск долгоживущих процессов ==="
# Запуск трех процессов в фоне
long_running_process 1 &
pid1=$!
echo "Запущен процесс 1 с PID: $pid1"
long_running_process 2 &
pid2=$!
echo "Запущен процесс 2 с PID: $pid2"
long_running_process 3 &
pid3=$!
echo "Запущен процесс 3 с PID: $pid3"
echo ""
echo "Ожидание 5 секунд перед управлением..."
sleep 5
echo ""
echo "=== Приостановка процесса 2 (SIGSTOP) ==="
kill -STOP $pid2
sleep 2
echo ""
echo "=== Возобновление процесса 2 (SIGCONT) ==="
kill -CONT $pid2
sleep 3
echo ""
echo "=== Завершение всех процессов (SIGTERM) ==="
kill -TERM $pid1
kill -TERM $pid2
kill -TERM $pid3
# Ожидание завершения
wait $pid1
wait $pid2
wait $pid3
echo ""
echo "=== Все процессы завершены ==="