Оптимизация параллельной обработки задач в Bash

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

bashwaitpid

👁 Для эффективного управления задачами в Bash важно контролировать процессы. Обычные методы параллельной обработки могут быть неэффективными без контроля. Использование конструкции wait с фоновыми процессами (&) повышает производительность и точность скриптов в многозадачной среде.

📝 Пример оптимизации с параллельным выполнением процессов:

#!/bin/bash

# Функция для имитации длительной операции
long_task() {
  sleep $1
  echo "Task with sleep $1 seconds finished."
}

# Запуск нескольких задач параллельно
long_task 3 &  # Задача 1
PID1=$!
long_task 5 &  # Задача 2
PID2=$!
long_task 2 &  # Задача 3
PID3=$!

# Ожидание завершения всех процессов
wait $PID1
wait $PID2
wait $PID3

echo "All tasks completed."

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

  • Каждая функция long_task запускается в фоновом режиме с помощью &, что позволяет выполняться нескольким задачам одновременно.
  • Для каждого процесса сохраняется его PID (идентификатор процесса) с помощью $!.
  • Затем используется команда wait, чтобы Bash подождал завершения всех фоновых процессов перед тем, как продолжить выполнение скрипта.

❗️ Этот метод подходит, например, для автоматизации CI/CD процессов, загрузке и обработке данных, или для интеграции с микросервисами, где несколько процессов могут работать одновременно, но требуется надежный контроль над завершением всех задач перед следующими этапами.

tags: #bash #полезно

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот: Bash‑скрипт на тёмном фоне с функцией long_task, фоновые процессы, PID и команда wait; логотип RECURA.
Пример кода с параллельным запуском задач в Bash и ожиданием через wait.

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