De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Subshells em scripts bash

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

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Rubens Queiroz de Almeida