Bash Parallel Jobs Usando For Loop

Bash Parallel Jobs Usando For Loop



Esistono molti modi in Linux per eseguire più comandi o script Bash in parallelo. Uno dei modi è utilizzare un ciclo 'for' nello script Bash per eseguire un lavoro parallelo. Questo ciclo è molto utile per eseguire i lavori paralleli utilizzando il comando 'seq'. I diversi modi di eseguire i lavori paralleli utilizzando un ciclo 'for' sono mostrati in questo tutorial.

Diversi esempi di lavori paralleli

I diversi modi di eseguire i lavori paralleli utilizzando il ciclo 'for' sono mostrati in questa parte del tutorial.

Esempio 1: eseguire i processi paralleli utilizzando il ciclo 'For'.

L'uso del ciclo 'for' è il modo più semplice per eseguire i lavori paralleli nello script Bash. Crea un file Bash con il seguente script che esegue il ciclo 'for' 10000 volte e stampa un numero dopo l'iterazione di 1000 volte. Questa attività viene eseguita in parallelo utilizzando il ciclo 'for'.







#!/bin/bash

#Itera il ciclo fino a raggiungere 10000

per val In ` seg 0 1000 10000 ` ;

Fare

#Stampa ogni 1000 numeri

eco $val

Fatto

Il seguente output viene visualizzato dopo l'esecuzione dello script. Ci sono 10 numeri compresi tra 0 e 10000 che vengono stampati nell'output:



  p3



Esempio 2: eseguire i processi paralleli utilizzando il ciclo 'For' nidificato

Crea un file Bash con il seguente script che esegue il ciclo 'for' nidificato che genera il numero di serie utilizzando i caratteri alfabetici da 'A' a 'C' e i numeri da 1 a 3. Nella prima iterazione del ciclo esterno e dopo completando l'iterazione del ciclo interno, “A1. CodeIgniter”, “A2. Laravel” e “A3. CakePHP” vengono stampati. Nella seconda iterazione del ciclo esterno e dopo aver completato l'iterazione del ciclo interno, “B1. Oracle”, “B2. MySQL” e “B3. SQL” vengono stampati. Nella terza iterazione del ciclo esterno e dopo aver completato l'iterazione del ciclo interno, “C1. CSS”, “C2. JQuery' e 'C3. JavaScript” vengono stampati.





#Anello esterno

per alfa In { AC }

Fare

#Anello interno

per numero In { 1 .. 3 }

Fare

#Stampa l'output in base alla condizione

Se [ $alfa == 'UN' ] ; Poi

lista di array = ( 'Codice Accenditore' 'Laravel' 'TortaPHP' )

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

lista di array = ( 'Oracolo' 'MySQL' 'SQL' )

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

lista di array = ( 'CSS' 'Jquery' 'Javascript' )

Essere

eco ' $alfa $numero . ${listaarray[$numero-1]} '

Fatto

Fatto

Dopo l'esecuzione dello script viene visualizzato il seguente output:



Esempio 3: eseguire i processi paralleli utilizzando il ciclo 'For' e il comando 'Wait'.

Il comando 'wait' è un comando molto utile di Bash che viene utilizzato per attendere che un lavoro completi l'attività quando sono in esecuzione più lavori. Se sono in esecuzione meno processi, il comando 'wait' avvia un nuovo processo in modo asincrono. Crea un file Bash con il seguente script che esegue un processo in background all'interno del ciclo 'for' nidificato. Il comando 'wait' viene utilizzato per attendere il completamento di tutti i processi figlio. I comandi 'date' e 'sleep' vengono eseguiti come processo in background.

#Anello esterno

per io In { 1 .. 2 }

Fare

#Anello interno

per J In { 1 .. 3 }

Fare

Se test ' $(lavori | wc -l) ' -ge 2 ; Poi

Aspettare -N

Essere

#Processo in background

{

data

sonno 1

} &

Fatto

Fatto

Il seguente output viene visualizzato dopo l'esecuzione dello script. La data e l'ora correnti vengono stampate 6 volte dal processo in background per iterare i cicli 'for' nidificati per 2×3=6 volte:

Esempio 4: Differenze tra sequenze sequenziali e parallele

Crea un file Bash con il seguente script che mostri le differenze tra l'esecuzione sequenziale e l'esecuzione parallela. La funzione prn_char() è definita nello script per stampare cinque caratteri con una durata di 0,5 secondi. Successivamente, il primo ciclo 'for' viene utilizzato per eseguire la funzione prn_char() in sequenza. Il secondo ciclo 'for' viene utilizzato per eseguire la funzione prn_char() in parallelo.

#Definisci una funzione per stampare 5 caratteri con una durata di 0,5 secondi

prn_char ( ) {

per C In Ciao; Fare

sonno 0,5 ;

eco -N $ c ;

Fatto

eco

}

#Esegui la funzione usando il ciclo for in sequenza

per fuori In { 1 .. 3 } ; Fare

prn_char ' $ fuori '

Fatto

#Esegue la funzione utilizzando il ciclo for in parallelo

per fuori In { 1 .. 3 } ; Fare

prn_char ' $ fuori ' &

Fatto


Il seguente output viene visualizzato dopo l'esecuzione dello script. La differenza tra l'esecuzione sequenziale e l'esecuzione parallela viene mostrata nell'output. Qui, tutti i caratteri del ciclo 'for' della funzione prn_char() vengono stampati alla volta nell'esecuzione sequenziale e ogni carattere viene stampato tre volte nell'esecuzione parallela:

  p4

Conclusione

L'esecuzione dei lavori paralleli utilizzando il ciclo 'for' è necessaria per molti scopi di programmazione. I metodi per eseguire i lavori paralleli utilizzando il ciclo 'for' sono mostrati in questo tutorial.