Управление процессами: timeout и wait в Bash

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

bashtimeoutwait

Для управления несколькими параллельными процессами в Bash важно контролировать их выполнение и предотвращать зависания или снижение производительности. Инструменты timeout и wait позволяют ограничить время выполнения задач и обеспечить их корректное завершение. Пример: запуск длительных процессов с ограничением времени работы и ожиданием их завершения перед продолжением.

📝 Пример кода:

#!/bin/bash

# Функция для выполнения команды с таймаутом
run_with_timeout() {
    timeout 10s "$@" || echo "Process $1 timed out"
}

# Запуск нескольких процессов параллельно
run_with_timeout command1 & 
run_with_timeout command2 & 
run_with_timeout command3 &

# Ожидаем завершения всех процессов
wait
echo "All processes completed."

📌 Как это работает:

  • timeout 10s — устанавливает ограничение по времени на выполнение каждой команды. Если процесс не завершится за 10 секунд, он будет завершен автоматически.
  • & — запускает команды в фоновом режиме, позволяя им работать параллельно.
  • wait — блокирует выполнение скрипта до тех пор, пока все фоновые процессы не завершатся.
  • command1, command2, command3 — это команды или скрипты, которые могут выполнять задачи в фоне, например, запрашивать внешние API, выполнять анализ данных или обрабатывать файлы.

❗️ Такой способ контроля над процессами помогает избегать зависаний и позволяет обрабатывать ошибки на лету, не блокируя другие процессы.

tags: #bash #linux #автоматизация

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот в тёмной теме: пример Bash-скрипта с функцией run_with_timeout, фоновыми процессами, сообщением о завершении и логотипом RECURA
Пример Bash-кода с использованием timeout и wait

Читайте так же