Басх паралелни послови који користе за петљу

Bash Paralelni Poslovi Koji Koriste Za Petlu



У Линуку постоји много начина за паралелно покретање више команди или Басх скрипти. Један од начина је да користите петљу „фор“ у Басх скрипти за покретање паралелног посла. Ова петља је веома корисна за покретање паралелних послова помоћу команде „сек“. Различити начини извршавања паралелних послова помоћу петље „фор“ приказани су у овом водичу.

Различити примери паралелних послова

Различити начини покретања паралелних послова помоћу петље „фор“ приказани су у овом делу упутства.

Пример 1: Покрените паралелне послове користећи петљу „Фор“.

Коришћење „фор“ петље је једноставнији начин за обављање паралелних послова у Басх скрипти. Направите Басх датотеку са следећом скриптом која покреће петљу „фор“ 10000 пута и одштампајте број након итерације од 1000 пута. Овај задатак се ради паралелно користећи петљу „фор“.







#!/бин/басх

#Понављајте петљу док не дођете до 10000

за вал ин ` сек 0 1000 10000 ` ;

урадите

#Одштампајте сваки 1000-ти број

одјек $вал

Готово

Следећи излаз се појављује након извршавања скрипте. Постоји 10 бројева између 0 и 10000 који се штампају у излазу:



  п3



Пример 2: Покрените паралелне послове користећи угнежђену петљу „Фор“.

Направите Басх датотеку са следећом скриптом која покреће угнежђену петљу „фор“ која генерише серијски број користећи абецедне знакове од „А“ до „Ц“ и бројеве од 1 до 3. У првој итерацији спољне петље и после завршавајући итерацију унутрашње петље, „А1. ЦодеИгнитер”, „А2. Ларавел“ и „А3. ЦакеПХП” се штампају. У другој итерацији спољашње петље и након завршетка итерације унутрашње петље, „Б1. Орацле”, „Б2. МиСКЛ“ и „Б3. СКЛ” се штампају. У трећој итерацији спољашње петље и након завршетка итерације унутрашње петље, „Ц1. ЦСС”, „Ц2. ЈКуери“ и „Ц3. ЈаваСцрипт“ се штампају.





#Спољна петља

за алфа ин { А..Ц }

урадите

#Унутрашња петља

за број ин { 1 .. 3 }

урадите

#Одштампајте излаз на основу услова

ако [ $алпха == 'А' ] ; онда

низ листа = ( 'ЦодеИгнитер' 'Ларавел' 'ЦакеПХП' )

елиф [ $алпха == 'Б' ] ; онда

низ листа = ( 'Орацле' 'МиСКЛ' 'СКЛ' )

елиф [ $алпха == 'Ц' ] ; онда

низ листа = ( 'ЦСС' 'ЈКуери' 'ЈаваСцрипт' )

бити

одјек ' $алпха $број . ${арраиЛист[$нумбер-1]} '

Готово

Готово

Следећи излаз се појављује након извршавања скрипте:



Пример 3: Покрените паралелне послове користећи петљу „Фор“ и команду „Чекај“

Команда „ваит“ је веома корисна команда Басх-а која се користи за чекање да један посао заврши задатак када се извршава више послова. Ако се изводи мање послова, команда „ваит“ асинхроно покреће нови посао. Креирајте Басх датотеку са следећом скриптом која покреће посао у позадини унутар угнежђене „фор“ петље. Команда „ваит“ се користи за чекање да се заврше сви подређени процеси. Команде „датум“ и „спавање“ се извршавају као процес у позадини.

#Спољна петља

за и ин { 1 .. 2 }

урадите

#Унутрашња петља

за ј ин { 1 .. 3 }

урадите

ако тест ' $(послови | вц -л) ' -ге 2 ; онда

чекати

бити

#Позадински процес

{

датум

спавати 1

} &

Готово

Готово

Следећи излаз се појављује након извршавања скрипте. Тренутни датум и време се штампају 6 пута из позадинског процеса да би се угнежђене „фор“ петље поновиле 2×3=6 пута:

Пример 4: Разлике између секвенцијалних и паралелних покретања

Направите Басх датотеку са следећом скриптом која показује разлике између секвенцијалног и паралелног покретања. Функција прн_цхар() је дефинисана у скрипти за штампање пет знакова са трајањем од 0,5 секунди. Затим, прва петља „фор“ се користи за секвенцијално покретање функције прн_цхар(). Друга „фор“ петља се користи за паралелно покретање функције прн_цхар().

#Дефинишите функцију за штампање 5 знакова са трајањем од 0,5 секунди

прн_цхар ( ) {

за ц ин Здраво; урадите

спавати 0.5 ;

одјек ;

Готово

одјек

}

#Покрени функцију користећи фор петљу секвенцијално

за оут ин { 1 .. 3 } ; урадите

прн_цхар ' $оут '

Готово

#Покрени функцију користећи фор петљу паралелно

за оут ин { 1 .. 3 } ; урадите

прн_цхар ' $оут ' &

Готово


Следећи излаз се појављује након извршавања скрипте. Разлика између узастопног и паралелног рада приказана је на излазу. Овде се сви карактери „фор“ петље функције прн_цхар() штампају истовремено у секвенцијалном покретању и сваки знак се штампа три пута у паралелном покретању:

  п4

Закључак

Покретање паралелних послова помоћу петље „фор“ је потребно за многе сврхе програмирања. Методе покретања паралелних послова помоћу петље „фор“ су приказане у овом водичу.