Bash Parallel Jobs Using For Loop

Bash Parallel Jobs Using For Loop



V Linuxu existuje mnoho způsobů, jak paralelně spouštět více příkazů nebo Bash skriptů. Jedním ze způsobů je použití smyčky „for“ ve skriptu Bash ke spuštění paralelní úlohy. Tato smyčka je velmi užitečná pro spouštění paralelních úloh pomocí příkazu „seq“. V tomto tutoriálu jsou uvedeny různé způsoby provádění paralelních úloh pomocí smyčky „for“.

Různé příklady paralelních úloh

V této části výukového programu jsou uvedeny různé způsoby spouštění paralelních úloh pomocí smyčky „for“.

Příklad 1: Spusťte paralelní úlohy pomocí smyčky „For“.

Použití smyčky „for“ je jednodušší způsob provádění paralelních úloh ve skriptu Bash. Vytvořte soubor Bash pomocí následujícího skriptu, který spustí smyčku „for“ 10 000krát a vytiskne číslo po 1000násobné iteraci. Tato úloha se provádí paralelně pomocí smyčky „for“.







#!/bin/bash

# Iterujte smyčku, dokud nedosáhnete 10 000

pro val v ' seq 0 1000 10 000 ' ;

dělat

#Vytiskněte každé 1000. číslo

echo $val

Hotovo

Po provedení skriptu se zobrazí následující výstup. Ve výstupu je vytištěno 10 čísel mezi 0 a 10000:



  p3



Příklad 2: Spusťte paralelní úlohy pomocí vnořené smyčky „For“.

Vytvořte soubor Bash pomocí následujícího skriptu, který spouští vnořenou smyčku „for“, která generuje sériové číslo pomocí abecedních znaků od „A“ do „C“ a čísel 1 až 3. V první iteraci vnější smyčky a poté dokončení iterace vnitřní smyčky, „A1. CodeIgniter“, „A2. Laravel“ a „A3. CakePHP“ jsou vytištěny. Ve druhé iteraci vnější smyčky a po dokončení iterace vnitřní smyčky se „B1. Oracle“, „B2. MySQL“ a „B3. SQL“ jsou vytištěny. Ve třetí iteraci vnější smyčky a po dokončení iterace vnitřní smyčky se „C1. CSS“, „C2. JQuery“ a „C3. JavaScript“ jsou vytištěny.





#Vnější smyčka

pro alfa v { A..C }

dělat

#Vnitřní smyčka

pro číslo v { 1 .. 3 }

dělat

# Vytiskněte výstup na základě podmínky

-li [ $alpha == 'A' ] ; pak

arrayList = ( 'CodeIgniter' 'Laravel' 'CakePHP' )

elif [ $alpha == 'B' ] ; pak

arrayList = ( 'Věštec' 'MySQL' 'SQL' )

elif [ $alpha == 'C' ] ; pak

arrayList = ( 'CSS' 'JQuery' 'JavaScript' )

být

echo ' $alpha $číslo . ${arrayList[$number-1]} '

Hotovo

Hotovo

Po spuštění skriptu se zobrazí následující výstup:



Příklad 3: Spusťte paralelní úlohy pomocí smyčky „For“ a příkazu „Wait“.

Příkaz „wait“ je velmi užitečný příkaz Bash, který se používá k čekání na dokončení jedné úlohy, když je spuštěno více úloh. Pokud běží méně úloh, příkaz „wait“ spustí novou úlohu asynchronně. Vytvořte soubor Bash pomocí následujícího skriptu, který spustí úlohu na pozadí uvnitř vnořené smyčky „for“. Příkaz „wait“ se používá pro čekání na dokončení všech podřízených procesů. Příkazy „date“ a „sleep“ se provádějí jako proces na pozadí.

#Vnější smyčka

pro i v { 1 .. 2 }

dělat

#Vnitřní smyčka

pro j v { 1 .. 3 }

dělat

-li test ' $(pracovní místa | wc -l) ' -ge 2 ; pak

Počkejte -n

být

#Proces na pozadí

{

datum

spát 1

} &

Hotovo

Hotovo

Po provedení skriptu se zobrazí následující výstup. Aktuální datum a čas se vytisknou 6krát z procesu na pozadí, aby se vnořené smyčky „for“ opakovaly 2×3=6krát:

Příklad 4: Rozdíly mezi sekvenčním a paralelním chodem

Vytvořte soubor Bash pomocí následujícího skriptu, který ukazuje rozdíly mezi sekvenčním a paralelním spuštěním. Funkce prn_char() je definována ve skriptu pro tisk pěti znaků s 0,5 sekundou trvání. Dále se první smyčka „for“ používá k sekvenčnímu spuštění funkce prn_char(). Druhá smyčka „for“ se používá k paralelnímu spuštění funkce prn_char().

#Definujte funkci pro tisk 5 znaků s trváním 0,5 sekundy

prn_char ( ) {

pro C v Ahoj; dělat

spát 0,5 ;

echo -n $c ;

Hotovo

echo

}

# Spusťte funkci pomocí smyčky for postupně

pro ven v { 1 .. 3 } ; dělat

prn_char ' $out '

Hotovo

#Spusťte funkci pomocí smyčky for paralelně

pro ven v { 1 .. 3 } ; dělat

prn_char ' $out ' &

Hotovo


Po provedení skriptu se zobrazí následující výstup. Rozdíl mezi sekvenčním a paralelním chodem je zobrazen na výstupu. Zde se všechny znaky cyklu „for“ funkce prn_char() vytisknou najednou v sekvenčním běhu a každý znak se vytiskne třikrát v paralelním běhu:

  p4

Závěr

Spouštění paralelních úloh pomocí smyčky „for“ je vyžadováno pro mnohé účely programování. V tomto kurzu jsou uvedeny metody spouštění paralelních úloh pomocí smyčky „for“.