Я делаю сценарий оболочки и возникла неизвестная ситуация. Я должен выполнить определенное количество процессов, давайте предположим 12. Но я хочу каждый раз ограничивать выполнение «t». Поэтому, если «t» равно 3, мне пришлось бы выполнить 3 процесса, затем 3, 3 и, наконец, 3. Но я хотел бы сделать это автоматически, поэтому мне нужно отслеживать эти запущенные процессы и когда один из них закончен, я должен выполнить один оставшихся процессов.Как я могу контролировать количество запущенных процессов?
После некоторых исследований я обнаружил следующую команду:
launch backgroundprocess &
PROC_ID=$!
while kill -0 "$PROC_ID" >/dev/null 2>&1; do
echo "PROCESS IS RUNNING"
done
echo "PROCESS TERMINATED"
Предложено cuonglm.
Это может помочь узнать, работает ли процесс или нет. Я попытался создать 12 процессов и сохранить их в 3 разных переменных, но он работает неправильно.
processors=3
counter=0
for A in {1..12}
do
counter=$((counter+1))
backgroundprocess &
PID[$A]=$!
while [ $counter -eq $processors ]
do
if kill -0 "$PID[1]" >/dev/null 2>&1;
then
counter=$(($counter-1))
break
fi
done
done
Вы знаете, как я могу это делать?
Пока нет ничего плохого в 'rm -f '$ {tmp_file}" ', корпус * brace * не имеет никакой цели. 'rm -f" $ tmp_file "является эквивалентным. (то же самое относится к 'touch' ниже) –
В частности, если вы считаете, что сценарий генерирует имя файла, который представляет собой список цифр; Я имею в виду, что в имени файла нет специальных символов. Благодарим за информацию. Я также посмотрю на man-страницы. –