Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 25 de setembro de 2014
Uma shell script pode criar subprocessos ou subshells. Estas subshells permitem com que o script execute processamento paralelo, realizando na prática diversas tarefas simultaneamente.
As subshells podem ser executadas em paralelo com as tarefas do processo pai. Para executar uma tarefa em paralelo ela deve ser executada em background, da forma tradicional, colocando ao final do comando o caractere "&" (ampersand). Em computadores com múltiplos núcleos o sistema operacional irá distribuir as tarefas pelos processadores disponíveis.
Outra aplicação útil é quando os comandos precisam ser executados em um ambiente com variáveis de ambiente distintas ou em outro diretório. Se cada comando for executado em uma subshell diferente, não existe o risco de se corromper as variáveis de ambiente do processo pai. Ao final da execução da subshell, o processamento continua dentro do ambiente do processo pai, que não foi alterado pela subshell.
No script abaixo temos duas subshells: a primeira conta de 1 a 99 e a segunda conta de 1000 a 1009. As duas subshells são executadas em background e podemos ver, a partir dos resultados obtidos na tela, que as duas são executadas em paralelo.
#!/bin/bash
echo "Before starting subshell"
( count=1
while [ $count -le 99 ]
do
echo "$count"
sleep 1
(( count++ ))
done ) &
( count=1000
while [ $count -le 1099 ]
do
echo "$count"
sleep 1
(( count++ ))
done ) &
wait echo "Finished"
Referências
- Subshells in Bash Scripts: o exemplo e as explicações foram traduzidos e adaptados a partir deste artigo.
- Subshells








0Pas de commentaire
Please type the two words below