Trabalhos Paralelos Bash Usando For Loop

Trabalhos Paralelos Bash Usando For Loop



Existem muitas maneiras no Linux de executar vários comandos ou scripts Bash em paralelo. Uma das maneiras é usar um loop “for” no script Bash para executar uma tarefa paralela. Este loop é muito útil para executar as tarefas paralelas usando o comando “seq”. As diferentes formas de executar as tarefas paralelas usando um loop “for” são mostradas neste tutorial.

Diferentes Exemplos de Trabalhos Paralelos

As diferentes formas de executar as tarefas paralelas usando o loop “for” são mostradas nesta parte do tutorial.

Exemplo 1: Executar trabalhos paralelos usando o loop “For”

Usar o loop “for” é a maneira mais simples de executar as tarefas paralelas no script Bash. Crie um arquivo Bash com o seguinte script que executa o loop “for” 10.000 vezes e imprime um número após a iteração de 1.000 vezes. Esta tarefa é feita em paralelo usando o loop “for”.







#!/bin/bash

#Itera o loop até chegar a 10000

para val em ` sequência 0 1000 10000 ` ;

fazer

# Imprima cada milésimo número

eco $val

feito

A saída a seguir aparece após a execução do script. Existem 10 números entre 0 e 10000 que são impressos na saída:



  p3



Exemplo 2: Executar trabalhos paralelos usando o loop “For” aninhado

Crie um arquivo Bash com o seguinte script que executa o loop “for” aninhado que gera o número de série usando os caracteres alfabéticos de “A” a “C” e os números de 1 a 3. Na primeira iteração do loop externo e depois completando a iteração do loop interno, “A1. CodeIgniter”, “A2. Laravel” e “A3. CakePHP” são impressos. Na segunda iteração do loop externo e após completar a iteração do loop interno, “B1. Oráculo”, “B2. MySQL” e “B3. SQL” são impressos. Na terceira iteração do loop externo e após completar a iteração do loop interno, “C1. CSS”, “C2. JQuery” e “C3. JavaScript” são impressos.





#Loop externo

para alfa em { A..C }

fazer

#Laço interno

para número em { 1 .. 3 }

fazer

# Imprima a saída com base na condição

se [ $alfa == 'A' ] ; então

arrayList = ( 'CodeIgniter' 'Laravel' 'BoloPHP' )

elif [ $alfa == 'B' ] ; então

arrayList = ( 'Oráculo' 'MySQL' 'SQL' )

elif [ $alfa == 'C' ] ; então

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

ser

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

feito

feito

A seguinte saída aparece após a execução do script:



Exemplo 3: Executar trabalhos paralelos usando o loop “For” e o comando “Wait”

O comando “wait” é um comando muito útil do Bash que é usado para esperar que um trabalho conclua a tarefa quando vários trabalhos estão em execução. Se menos trabalhos estiverem em execução, o comando “wait” inicia um novo trabalho de forma assíncrona. Crie um arquivo Bash com o seguinte script que executa um trabalho em segundo plano dentro do loop “for” aninhado. O comando “wait” é usado para aguardar a conclusão de todos os processos filhos. Os comandos “date” e “sleep” são executados como processo em segundo plano.

#Loop externo

para eu em { 1 .. 2 }

fazer

#Laço interno

para j em { 1 .. 3 }

fazer

se teste ' $(empregos | wc -l) ' -ge 2 ; então

espere -n

ser

#processo em segundo plano

{

data

dormir 1

} &

feito

feito

A saída a seguir aparece após a execução do script. A data e a hora atuais são impressas 6 vezes a partir do processo em segundo plano para iterar os loops “for” aninhados por 2 × 3 = 6 vezes:

Exemplo 4: Diferenças entre corridas sequenciais e paralelas

Crie um arquivo Bash com o script a seguir que mostra as diferenças entre a execução sequencial e a execução paralela. A função prn_char() é definida no script para imprimir cinco caracteres com duração de 0,5 segundo. Em seguida, o primeiro loop “for” é usado para executar a função prn_char() sequencialmente. O segundo loop “for” é usado para executar a função prn_char() em paralelo.

#Define uma função para imprimir 5 caracteres com 0,5 segundos de duração

prn_char ( ) {

para c em olá; fazer

dormir 0,5 ;

eco -n $c ;

feito

eco

}

#Execute a função usando o loop for sequencialmente

para fora em { 1 .. 3 } ; fazer

prn_char ' $fora '

feito

#Execute a função usando o loop for em paralelo

para fora em { 1 .. 3 } ; fazer

prn_char ' $fora ' &

feito


A saída a seguir aparece após a execução do script. A diferença entre a execução sequencial e a execução paralela é mostrada na saída. Aqui, todos os caracteres do loop “for” da função prn_char() são impressos por vez na execução sequencial e cada caractere é impresso três vezes na execução paralela:

  p4

Conclusão

A execução de tarefas paralelas usando o loop “for” é necessária para muitos propósitos de programação. Os métodos de execução das tarefas paralelas usando o loop “for” são mostrados neste tutorial.