TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #317 1.24K
Распараллеливание задач с контролем количества потоков

Когда нужно запустить 1000 задач, но не обрушить сервер - важно уметь распараллеливать выполнение с ограничением на количество одновременных процессов. В bash это можно реализовать без внешних утилит вроде parallel.

🌟 Задача: скачать список URL-ов, но не больше N одновременно.

🛠 Пример скрипта:


#!/bin/bash

MAX_JOBS=5
URLS_FILE="urls.txt"

semaphore() {
while (( $(jobs -rp | wc -l) >= MAX_JOBS )); do
sleep 0.5
done
}

process_url() {
local url="$1"
echo "[*] Загрузка $url"
curl -s -o /dev/null "$url" && echo "[+] $url OK" || echo "[-] $url FAIL"
}

while read -r url; do
semaphore
process_url "$url" &
done < "$URLS_FILE"

wait
echo "Все задачи завершены"


▪️ Пояснения:

jobs -rp - выводит только PID активных фоновых задач.
semaphore() - блокирует запуск, если уже выполняется $MAX_JOBS процессов.
wait в конце - ждет завершения всех фоновых заданий.

▪️ Когда использовать:

📍Массовая обработка файлов (сжатие, конвертация).
📍Сканирование сети.
📍Пакетные вычисления или API-запросы.

BashTex 📱 #bash
  • 👍 7
More from @bash_tex
  1. Oct 9, 2026BashTex 📱 #мем
  2. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  3. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  4. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  5. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  6. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →