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

#!/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

Login

Welcome to Typer

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