Feines paral·leles Bash utilitzant el bucle For

Feines Paral Leles Bash Utilitzant El Bucle For



Existeixen moltes maneres a Linux d'executar diverses ordres o scripts Bash en paral·lel. Una de les maneres és utilitzar un bucle 'for' a l'script Bash per executar un treball paral·lel. Aquest bucle és molt útil per executar els treballs paral·lels mitjançant l'ordre 'seq'. En aquest tutorial es mostren les diferents maneres d'executar els treballs paral·lels mitjançant un bucle 'for'.

Diferents exemples de treballs paral·lels

Les diferents maneres d'executar els treballs paral·lels mitjançant el bucle 'for' es mostren en aquesta part del tutorial.

Exemple 1: executeu les tasques paral·leles mitjançant el bucle 'For'.

L'ús del bucle 'for' és la manera més senzilla de realitzar els treballs paral·lels a l'script Bash. Creeu un fitxer Bash amb el següent script que executi el bucle 'for' 10000 vegades i imprimiu un número després de la iteració de 1000 vegades. Aquesta tasca es fa en paral·lel mitjançant el bucle 'for'.







#!/bin/bash

#Iterar el bucle fins arribar a 10000

per val en ` seq 0 1000 10000 ` ;

fer

#Imprimeix cada número 1000

eco $val

fet

La sortida següent apareix després d'executar l'script. Hi ha 10 números entre 0 i 10.000 que s'imprimeixen a la sortida:



  p3



Exemple 2: executeu les tasques paral·leles utilitzant el bucle 'For' niat

Creeu un fitxer Bash amb el següent script que executa el bucle 'for' imbricat que genera el número de sèrie utilitzant els caràcters alfabètics de 'A' a 'C' i els números de l'1 al 3. A la primera iteració del bucle exterior i després completant la iteració del bucle interior, 'A1. CodeIgniter', 'A2. Laravel”, i “A3. CakePHP” s'imprimeixen. A la segona iteració del bucle exterior i després de completar la iteració del bucle interior, 'B1. Oracle”, “B2. MySQL' i 'B3. SQL” s'imprimeixen. A la tercera iteració del bucle exterior i després de completar la iteració del bucle interior, 'C1. CSS”, “C2. JQuery' i 'C3. JavaScript” s'imprimeixen.





#Bucle exterior

per alfa en { AC }

fer

#Bucle interior

per nombre en { 1 .. 3 }

fer

#Imprimeix la sortida en funció de la condició

si [ $alfa == 'A' ] ; aleshores

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

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

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

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

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

ser

eco ' $alfa $número . ${arrayList[$number-1]} '

fet

fet

La sortida següent apareix després d'executar l'script:



Exemple 3: executeu les tasques paral·leles utilitzant el bucle 'For' i l'ordre 'Espera'.

L'ordre 'espera' és una ordre molt útil de Bash que s'utilitza per esperar que un treball completi la tasca quan s'executen diverses tasques. Si s'executen menys treballs, l'ordre 'espera' inicia un treball nou de manera asíncrona. Creeu un fitxer Bash amb el següent script que executa un treball de fons dins del bucle 'for' imbricat. L'ordre 'espera' s'utilitza per esperar per completar tots els processos fills. Les ordres 'data' i 'sleep' s'executen com a procés en segon pla.

#Bucle exterior

per i en { 1 .. 2 }

fer

#Bucle interior

per j en { 1 .. 3 }

fer

si prova ' $(feines | wc -l) ' -ge 2 ; aleshores

espera -n

ser

#Procés de fons

{

data

dormir 1

} &

fet

fet

La sortida següent apareix després d'executar l'script. La data i l'hora actuals s'imprimeixen 6 vegades des del procés de fons per repetir els bucles 'for' imbricats durant 2 × 3 = 6 vegades:

Exemple 4: Diferències entre execucions seqüencials i paral·leles

Creeu un fitxer Bash amb el següent script que mostri les diferències entre l'execució seqüencial i l'execució paral·lela. La funció prn_char() es defineix a l'script per imprimir cinc caràcters amb una durada de 0,5 segons. A continuació, el primer bucle 'for' s'utilitza per executar la funció prn_char() seqüencialment. El segon bucle 'for' s'utilitza per executar la funció prn_char() en paral·lel.

#Definiu una funció per imprimir 5 caràcters amb una durada de 0,5 segons

prn_char ( ) {

per c en Hola; fer

dormir 0.5 ;

eco -n $c ;

fet

eco

}

#Executeu la funció utilitzant el bucle for seqüencialment

per fora en { 1 .. 3 } ; fer

prn_char ' $fora '

fet

#Executeu la funció fent servir el bucle for en paral·lel

per fora en { 1 .. 3 } ; fer

prn_char ' $fora ' &

fet


La sortida següent apareix després d'executar l'script. A la sortida es mostra la diferència entre el recorregut seqüencial i el paral·lel. Aquí, tots els caràcters del bucle 'for' de la funció prn_char() s'imprimeixen alhora en l'execució seqüencial i cada caràcter s'imprimeix tres vegades en l'execució paral·lela:

  p4

Conclusió

L'execució dels treballs paral·lels utilitzant el bucle 'for' és necessari per a molts propòsits de programació. En aquest tutorial es mostren els mètodes per executar els treballs paral·lels mitjançant el bucle 'for'.