Bash Parallel Jobs For Loopin avulla

Bash Parallel Jobs For Loopin Avulla



Linuxissa on monia tapoja suorittaa useita komentoja tai Bash-skriptejä rinnakkain. Yksi tavoista on käyttää 'for'-silmukkaa Bash-komentosarjassa rinnakkaistyön suorittamiseen. Tämä silmukka on erittäin hyödyllinen rinnakkaisten töiden suorittamiseen 'seq'-komennolla. Tässä opetusohjelmassa esitetään eri tavat suorittaa rinnakkaiset työt 'for'-silmukalla.

Erilaisia ​​​​esimerkkejä rinnakkaisista töistä

Eri tavat suorittaa rinnakkaiset työt 'for'-silmukalla on esitetty tässä opetusohjelman osassa.

Esimerkki 1: Suorita rinnakkaiset työt For-silmukalla

'For'-silmukan käyttäminen on yksinkertaisin tapa suorittaa rinnakkaiset työt Bash-komentosarjassa. Luo Bash-tiedosto seuraavalla komentosarjalla, joka suorittaa 'for'-silmukan 10 000 kertaa ja tulosta numero 1000-kertaisen iteraation jälkeen. Tämä tehtävä suoritetaan rinnakkain käyttämällä 'for'-silmukkaa.







#!/bin/bash

#Iteroi silmukkaa, kunnes se saavuttaa 10 000:n

varten val sisään ` seq 0 1000 10 000 ` ;

tehdä

#Tulosta joka 1000. numero

kaiku $val

tehty

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Tulosteessa on 10 numeroa väliltä 0 - 10000:



  p3



Esimerkki 2: Suorita rinnakkaiset työt käyttämällä sisäkkäistä For-silmukkaa

Luo Bash-tiedosto seuraavalla komentosarjalla, joka suorittaa sisäkkäisen 'for'-silmukan, joka luo sarjanumeron käyttämällä aakkosmerkkejä 'A' - 'C' ja numeroita 1 - 3. Ulomman silmukan ensimmäisessä iteraatiossa ja sen jälkeen loppuun sisemmän silmukan iteroinnin, 'A1. CodeSigniter', 'A2. Laravel' ja 'A3. CakePHP” on painettu. Ulkoisen silmukan toisessa iteraatiossa ja sisäisen silmukan iteroinnin jälkeen 'B1. Oracle', 'B2. MySQL' ja 'B3. SQL” tulostetaan. Ulkoisen silmukan kolmannessa iteraatiossa ja sisäisen silmukan iteroinnin jälkeen 'C1. CSS', 'C2. JQuery' ja 'C3. JavaScript” on painettu.





#Ulkoinen silmukka

varten alfa sisään { A..C }

tehdä

#Sisälenkki

varten määrä sisään { 1 .. 3 }

tehdä

#Tulosta tulos olosuhteiden mukaan

jos [ $alpha == 'A' ] ; sitten

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

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

arrayList = ( 'Oraakkeli' 'MySQL' 'SQL' )

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

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

olla

kaiku ' $alpha $numero . ${arrayList[$number-1]} '

tehty

tehty

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen:



Esimerkki 3: Suorita rinnakkaiset työt For-silmukan ja Wait-komennolla

'Odota'-komento on erittäin hyödyllinen Bashin komento, jota käytetään odottamaan yhden työn suorittamista, kun useita töitä on käynnissä. Jos vähemmän töitä on käynnissä, 'wait'-komento aloittaa uuden työn asynkronisesti. Luo Bash-tiedosto seuraavalla komentosarjalla, joka suorittaa taustatyön sisäkkäisen 'for'-silmukan sisällä. 'Odota'-komentoa käytetään odottamaan kaikkien aliprosessien suorittamista. 'Date' ja 'sleep' komennot suoritetaan taustaprosessina.

#Ulkoinen silmukka

varten i sisään { 1 .. 2 }

tehdä

#Sisälenkki

varten j sisään { 1 .. 3 }

tehdä

jos testata ' $(työpaikat | wc -l) ' -ge 2 ; sitten

odota -n

olla

#Taustaprosessi

{

Päivämäärä

nukkua 1

} &

tehty

tehty

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Nykyinen päivämäärä ja kellonaika tulostetaan 6 kertaa taustaprosessista sisäkkäisten 'for'-silmukoiden toistamiseksi 2 × 3 = 6 kertaa:

Esimerkki 4: Erot peräkkäisten ja rinnakkaisten ajojen välillä

Luo Bash-tiedosto seuraavalla komentosarjalla, joka näyttää erot peräkkäisen ajon ja rinnakkaisajon välillä. Prn_char()-funktio on määritetty komentosarjassa tulostamaan viisi merkkiä 0,5 sekunnin kestoisina. Seuraavaksi ensimmäistä 'for'-silmukkaa käytetään prn_char()-funktion suorittamiseen peräkkäin. Toista 'for'-silmukkaa käytetään prn_char()-funktion suorittamiseen rinnakkain.

#Määritä toiminto, jolla tulostetaan 5 merkkiä 0,5 sekunnin kestolla

prn_char ( ) {

varten c sisään Hei; tehdä

nukkua 0.5 ;

kaiku -n $c ;

tehty

kaiku

}

#Aja funktio käyttämällä for-silmukkaa peräkkäin

varten ulos sisään { 1 .. 3 } ; tehdä

prn_char ' $out '

tehty

#Aja toiminto for-silmukalla rinnakkain

varten ulos sisään { 1 .. 3 } ; tehdä

prn_char ' $out ' &

tehty


Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen. Peräkkäisen ajon ja rinnakkaisajon välinen ero näkyy ulostulossa. Tässä kaikki prn_char()-funktion 'for'-silmukan merkit tulostetaan kerrallaan peräkkäisessä ajossa ja jokainen merkki tulostetaan kolme kertaa rinnakkaisajon aikana:

  p4

Johtopäätös

Rinnakkaisten töiden suorittaminen 'for'-silmukalla on tarpeen moniin ohjelmointitarkoituksiin. Menetelmät rinnakkaisten töiden suorittamiseen 'for'-silmukalla on esitetty tässä opetusohjelmassa.