Go to the content

Software Livre

Go back to Blog
Full screen Suggest an article

shell script

Settembre 26, 2014 20:15 , by Unknown - 0no comments yet | No one following this article yet.
Viewed 4 times

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


Source: http://softwarelivre.org/portal/noticias/shell-script

0no comments yet

    Post a comment

    The highlighted fields are mandatory.

    If you are a registered user, you can login and be automatically recognized.

    Cancel

    tags