Как я могу ограничить количество команд, выполняемых внутри сценария bash?

Предположим, у меня есть сценарий bash, который выполняет такой код:

for i in $LIST; do
 /path/to/my/script.sh $i &
done

Как видите, я нажимаю эти сценарии в фоновом режиме и позволяя родительскому сценарию выполнять столько команд, сколько он может, с максимальной скоростью. Проблема в том, что в моей системе в конечном итоге не хватит памяти, так как выполнение этих команд занимает около 15 или 20 секунд для каждого экземпляра.

Я запускаю один статический файл script.sh и передаю в сценарий простую переменную (например, номер клиента). Есть около 20 000 - 40 000 записей, которые я просматриваю в любой момент времени.

У меня вопрос: как я могу указать системе, что одновременно запускается только X экземпляров script.sh. Если выполняется слишком много скриптов, я хочу приостановить скрипт до тех пор, пока количество скриптов не станет ниже порогового значения, а затем продолжить.

Есть идеи?

5
задан Slickrick12 5 January 2012 в 18:52
поделиться