У меня есть сценарий, включающий несколько команд. Как я могу сгруппировать команды для запуска вместе (я хочу сделать несколько групп команд. Внутри каждой группы команды должны выполняться параллельно (одновременно). Группы должны запускаться последовательно, ожидая завершения одной группы перед запуском команды. следующая группа) ... т.е.
#!/bin/bash
command #1
command #2
command #3
command #4
command #5
command #6
command #7
command #8
command #9
command #10
Как я могу запустить каждые 3 команды, чтобы получить? Я старался:
#!/bin/bash
{
command #1
command #2
command #3
} &
{
command #4
command #5
command #6
} &
{
command #7
command #8
command #9
}&
command #10
Но это не сработало должным образом (я хочу одновременно запускать группы команд. Также мне нужно дождаться окончания первой группы, прежде чем запускать следующую группу)
Скрипт завершается с сообщением об ошибке!
Ответы:
Команды в каждой группе выполняются параллельно, и группы выполняются последовательно, каждая группа параллельных команд ожидает завершения предыдущей группы перед началом выполнения.
Ниже приведен рабочий пример:
Предположим, 3 группы команд, как в коде ниже. В каждой группе три команды запускаются в фоновом режиме
&
.Эти 3 команды будут запущены почти одновременно и будут выполняться параллельно, пока сценарий не
waits
будет завершен.После того, как все три команды, входящие в третью группу,
command 10
будут выполнены.источник
Должен работать (каждый отдельный компонент триплета будет работать последовательно, но группы будут работать параллельно). Вы, вероятно, не хотите, чтобы ваша родительская оболочка выходила до того, как группы закончили - отсюда и
wait
.источник
wait
.