Собственно, авторство не мое (ссылка на полную статью). Сохраню как готовый сниппет:

#!/bin/bash

RANDOM=10
JOBS_COUNTER=0
MAX_CHILDREN=10
MY_PID=$$

for i in {1..100}
do
    echo Cycle counter: $i
    JOBS_COUNTER=$((`ps ax -Ao ppid | grep $MY_PID | wc -l`))
    while [ $JOBS_COUNTER -ge $MAX_CHILDREN ]
    do
        JOBS_COUNTER=$((`ps ax -Ao ppid | grep $MY_PID | wc -l`))
        echo Jobs counter: $JOBS_COUNTER
        sleep 1
    done
    sleep $(($RANDOM % 30)) &
done
echo Finishing children ...

где MY_PID=$$ — это получение PID собственного процесса. Если запускаем дочерние скрипты или надо контролировать другой независимый процесс, то строчку подсчета количества процессов можно изменить так:

MY_PID="cyber-bot-loader.sh"
...
JOBS_COUNTER=$((`ps -ela | grep $MY_PID | wc -l`)) # ищем не дескриптору, а по имени процесса
Нет комментариев
Комментарии к: Параллельные задачи в Линуксе с ограничением количества процессов

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Attach images - Only PNG, JPG, JPEG and GIF are supported.

Good Reads

Worlwide

Trending

По умолчанию на Windows Server ставится движок докера, который поддерживает запуск только windows контейнеров. Поэтому пришлось поискать решение, как поставить и запустить

Login

Welcome to Typer

Brief and amiable onboarding is the first thing a new user sees in the theme.
Join Typer
Registration is closed.