Bash Parallelle Jobs Bruke For Loop

Bash Parallelle Jobs Bruke For Loop



Det finnes mange måter i Linux for å kjøre flere kommandoer eller Bash-skript parallelt. En av måtene er å bruke en 'for'-løkke i Bash-skriptet for å kjøre en parallell jobb. Denne sløyfen er veldig nyttig for å kjøre parallelljobbene ved å bruke 'seq'-kommandoen. De forskjellige måtene å utføre de parallelle jobbene ved å bruke en 'for'-løkke er vist i denne opplæringen.

Ulike eksempler på parallelle jobber

De forskjellige måtene å kjøre parallelljobbene ved å bruke 'for'-løkken er vist i denne delen av opplæringen.

Eksempel 1: Kjør de parallelle jobbene ved å bruke 'For'-løkken

Å bruke 'for'-løkken er den enklere måten å utføre parallelljobbene i Bash-skriptet. Lag en Bash-fil med følgende skript som kjører 'for'-løkken 10000 ganger og skriv ut et tall etter iterasjonen på 1000 ganger. Denne oppgaven gjøres parallelt ved å bruke 'for'-løkken.







#!/bin/bash

#Iterer løkken til den når 10 000

til val i ` seq 0 1000 10 000 ` ;

gjøre

#Skriv ut hvert 1000. nummer

ekko $val

ferdig

Følgende utdata vises etter utføring av skriptet. Det er 10 tall mellom 0 og 10000 som skrives ut i utdataene:



  s3



Eksempel 2: Kjør de parallelle jobbene ved å bruke den nestede 'For'-sløyfen

Lag en Bash-fil med følgende skript som kjører den nestede 'for'-løkken som genererer serienummeret ved å bruke de alfabetiske tegnene fra 'A' til 'C' og tallene 1 til 3. I den første iterasjonen av den ytre løkken og etter fullføre iterasjonen av den indre løkken, 'A1. CodeIgniter', 'A2. Laravel', og 'A3. CakePHP' skrives ut. I den andre iterasjonen av den ytre sløyfen og etter å ha fullført iterasjonen av den indre sløyfen, 'B1. Oracle', 'B2. MySQL' og 'B3. SQL' skrives ut. I den tredje iterasjonen av den ytre sløyfen og etter å ha fullført iterasjonen av den indre sløyfen, 'C1. CSS', 'C2. JQuery' og 'C3. JavaScript' skrives ut.





#Ytre løkke

til alfa i { A..C }

gjøre

#Indre løkke

til Antall i { 1 .. 3 }

gjøre

#Skriv ut utskriften basert på tilstanden

hvis [ $alfa == 'EN' ] ; deretter

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

elif [ $alfa == 'B' ] ; deretter

arrayList = ( 'Oracle' 'MySQL' 'SQL' )

elif [ $alfa == 'C' ] ; deretter

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

være

ekko ' $alfa $nummer . ${arrayList[$number-1]} '

ferdig

ferdig

Følgende utdata vises etter utføring av skriptet:



Eksempel 3: Kjør de parallelle jobbene ved å bruke 'For'-sløyfen og 'Vent'-kommandoen

'Vent'-kommandoen er en veldig nyttig kommando av Bash som brukes til å vente på en jobb for å fullføre oppgaven når flere jobber kjører. Hvis færre jobber kjører, starter 'vent'-kommandoen en ny jobb asynkront. Lag en Bash-fil med følgende skript som kjører en bakgrunnsjobb i den nestede 'for'-løkken. 'vent'-kommandoen brukes til å vente på å fullføre alle underordnede prosesser. Kommandoene 'dato' og 'sleep' utføres som bakgrunnsprosessen.

#Ytre løkke

til Jeg i { 1 .. 2 }

gjøre

#Indre løkke

til j i { 1 .. 3 }

gjøre

hvis test ' $(jobber | wc -l) ' -ge 2 ; deretter

vente -n

være

#Bakgrunnsprosess

{

Dato

sove 1

} &

ferdig

ferdig

Følgende utdata vises etter utføring av skriptet. Gjeldende dato og klokkeslett skrives ut 6 ganger fra bakgrunnsprosessen for å iterere de nestede 'for'-løkkene 2×3=6 ganger:

Eksempel 4: Forskjeller mellom sekvensielle og parallelle kjøringer

Lag en Bash-fil med følgende skript som viser forskjellene mellom den sekvensielle kjøringen og den parallelle kjøringen. Funksjonen prn_char() er definert i skriptet for å skrive ut fem tegn med 0,5 sekunders varighet. Deretter brukes den første 'for'-løkken til å kjøre prn_char()-funksjonen sekvensielt. Den andre 'for'-løkken brukes til å kjøre prn_char()-funksjonen parallelt.

#Definer en funksjon for å skrive ut 5 tegn med 0,5 sekunders varighet

prn_char ( ) {

til c i Hallo; gjøre

sove 0,5 ;

ekko -n $c ;

ferdig

ekko

}

#Kjør funksjonen med for loop sekvensielt

til ute i { 1 .. 3 } ; gjøre

prn_char ' $ut '

ferdig

#Kjør funksjonen med for loop parallelt

til ute i { 1 .. 3 } ; gjøre

prn_char ' $ut ' &

ferdig


Følgende utdata vises etter utføring av skriptet. Forskjellen mellom den sekvensielle kjøringen og den parallelle kjøringen vises i utgangen. Her blir alle tegnene i 'for'-løkken til prn_char()-funksjonen skrevet ut om gangen i den sekvensielle kjøringen, og hvert tegn skrives ut tre ganger i den parallelle kjøringen:

  s4

Konklusjon

Å kjøre parallelljobbene ved å bruke 'for'-løkke er nødvendig for mange programmeringsformål. Metodene for å kjøre parallelljobbene ved å bruke 'for'-løkken er vist i denne opplæringen.