Параллельные задания Bash с использованием цикла for

Parallel Nye Zadania Bash S Ispol Zovaniem Cikla For



В Linux существует множество способов параллельного запуска нескольких команд или сценариев Bash. Один из способов — использовать цикл for в сценарии Bash для запуска параллельного задания. Этот цикл очень полезен для запуска параллельных заданий с помощью команды «seq». В этом руководстве показаны различные способы выполнения параллельных заданий с использованием цикла for.

Различные примеры параллельных заданий

В этой части руководства показаны различные способы запуска параллельных заданий с использованием цикла for.

Пример 1. Запуск параллельных заданий с использованием цикла «For»

Использование цикла for — более простой способ выполнения параллельных заданий в сценарии Bash. Создайте файл Bash со следующим скриптом, который запускает цикл for 10000 раз и печатает число после итерации 1000 раз. Эта задача выполняется параллельно с использованием цикла for.







#!/бин/баш

# Повторяем цикл, пока не достигнем 10000

для вал в ` последовательность 0 1000 10000 ` ;

делать

#Вывести каждое 1000-е число

эхо $val

сделанный

Следующий вывод появляется после выполнения скрипта. На выходе выводится 10 чисел от 0 до 10000:



  р3



Пример 2. Запуск параллельных заданий с использованием вложенного цикла For

Создайте файл Bash со следующим сценарием, который запускает вложенный цикл «for», который генерирует серийный номер, используя буквенные символы от «A» до «C» и числа от 1 до 3. В первой итерации внешнего цикла и после завершая итерацию внутреннего цикла «A1. CodeIgniter», «A2. Laravel» и «A3. CakePHP». Во второй итерации внешнего цикла и после завершения итерации внутреннего цикла «B1. Оракул», «Б2. MySQL» и «B3. SQL». В третьей итерации внешнего цикла и после завершения итерации внутреннего цикла «C1. CSS», «С2. JQuery» и «C3. JavaScript».





#Внешний цикл

для альфа в { А..С }

делать

#Внутренний цикл

для число в { 1 .. 3 }

делать

#Распечатать вывод на основе условия

если [ $альфа == «А» ] ; затем

массивСписок '=' ( 'КодИгнитер' 'Ларавель' 'ТортPHP' )

Элиф [ $альфа == 'Б' ] ; затем

массивСписок '=' ( 'Оракул' 'Майскл' 'SQL' )

Элиф [ $альфа == 'С' ] ; затем

массивСписок '=' ( 'КСС' 'JQuery' 'Джаваскрипт' )

быть

эхо ' $альфа $ число . ${массивСписок[$номер-1]} '

сделанный

сделанный

После выполнения скрипта появляется следующий вывод:



Пример 3. Запуск параллельных заданий с использованием цикла «For» и команды «Wait»

Команда «ожидание» — очень полезная команда Bash, которая используется для ожидания завершения одной задачи при выполнении нескольких задач. Если запущено меньше заданий, команда «ожидание» запускает новое задание асинхронно. Создайте файл Bash со следующим сценарием, который запускает фоновое задание внутри вложенного цикла for. Команда «ожидание» используется для ожидания завершения всех дочерних процессов. Команды «date» и «sleep» выполняются в фоновом режиме.

#Внешний цикл

для я в { 1 .. 2 }

делать

#Внутренний цикл

для Дж в { 1 .. 3 }

делать

если тест ' $(работы | wc -l) ' -гэ 2 ; затем

ждать

быть

#Фоновый процесс

{

дата

спать 1

} &

сделанный

сделанный

Следующий вывод появляется после выполнения скрипта. Текущие дата и время печатаются 6 раз из фонового процесса для повторения вложенных циклов for 2×3=6 раз:

Пример 4: Различия между последовательным и параллельным запуском

Создайте файл Bash со следующим сценарием, который показывает различия между последовательным и параллельным запуском. Функция prn_char() определена в скрипте для печати пяти символов длительностью 0,5 секунды. Затем первый цикл for используется для последовательного запуска функции prn_char(). Второй цикл for используется для параллельного запуска функции prn_char().

# Определить функцию для печати 5 символов длительностью 0,5 секунды

prn_char ( ) {

для с в привет; делать

спать 0,5 ;

эхо ;

сделанный

эхо

}

#Последовательно запускаем функцию, используя цикл for

для вне в { 1 .. 3 } ; делать

prn_char ' $out '

сделанный

# Запустить функцию, используя цикл for параллельно

для вне в { 1 .. 3 } ; делать

prn_char ' $out ' &

сделанный


Следующий вывод появляется после выполнения скрипта. Разница между последовательным запуском и параллельным запуском отображается в выходных данных. Здесь все символы цикла for функции prn_char() печатаются одновременно при последовательном выполнении, а каждый символ печатается три раза при параллельном выполнении:

  п4

Заключение

Выполнение параллельных заданий с использованием цикла for требуется для многих целей программирования. В этом руководстве показаны методы запуска параллельных заданий с использованием цикла for.