Предположим, у меня есть сценарий bash, который выполняет такой код:
for i in $LIST; do
/path/to/my/script.sh $i &
done
Как видите, я нажимаю эти сценарии в фоновом режиме и позволяя родительскому сценарию выполнять столько команд, сколько он может, с максимальной скоростью. Проблема в том, что в моей системе в конечном итоге не хватит памяти, так как выполнение этих команд занимает около 15 или 20 секунд для каждого экземпляра.
Я запускаю один статический файл script.sh и передаю в сценарий простую переменную (например, номер клиента). Есть около 20 000 - 40 000 записей, которые я просматриваю в любой момент времени.
У меня вопрос: как я могу указать системе, что одновременно запускается только X экземпляров script.sh. Если выполняется слишком много скриптов, я хочу приостановить скрипт до тех пор, пока количество скриптов не станет ниже порогового значения, а затем продолжить.
Есть идеи?