Skip to content

Aprenda a executar subshells corretamente usando scripts Bash

14 de abril de 2021

UMA Concha é uma interface básica para inserir comandos em um sistema Linux. Com ele, você pode inserir um comando diretamente ou especificar um arquivo (script) que contenha uma sequência de comandos a serem executados. Os shells são organizados em uma hierarquia e qualquer shell pode criar um novo shell. O novo shell é considerado um processo filho – um subcamada—Do shell pai que o cria. Por padrão, um subshell depende de seu pai no sentido de que, se o processo pai terminar, o subshell também será encerrado. Qualquer saída é passada do subshell para o shell pai.

diferentes shells linux

Como Criar um Subshell

Em um script de shell Bash, crie um subshell usando a notação entre parênteses: #! / Bin / bash
# subshell-example.sh com loop infinito
(
enquanto [ 1 ]
Faz
echo “Subshell em execução…”
feito
)

class = “ql-syntax”> No exemplo, o loop while está entre parênteses, o que faz com que seja executado em um subshell do shell no qual o arquivo de script é executado.

Executando um Subshell em Segundo Plano

A menos que você especifique que o subshell deve ser executado em segundo plano, o shell pai espera que o subshell termine antes de continuar com o resto do script. No entanto, para executar subshells em paralelo, execute-os em segundo plano, o que é realizado com o caractere “e” comercial seguindo a expressão de subshell, conforme mostrado aqui: #! / Bin / bash
para ip em {1..254}; Faz
host = 192.168.1. $ ip
(ping -c 1 $ host> / dev / null
E se [ “$?” = 0 ]
então
echo $ host
fi) e
feito

Executando vários subshells em paralelo

Se você criar vários subshells como processos em segundo plano, poderá executar tarefas em paralelo. Normalmente, o sistema operacional usa processadores ou núcleos diferentes para cada processo e subprocesso, supondo que haja pelo menos tantos processadores ou núcleos quanto processos. Caso contrário, as tarefas são atribuídas aos mesmos processadores ou núcleos. Nesse caso, o processador ou núcleo alterna continuamente entre as tarefas atribuídas até que as tarefas sejam concluídas. Use a instrução de espera para dizer ao processo pai para esperar que os subprocessos terminem antes de continuar com o resto do script:

Usos para Subshells

Os subshells são úteis quando os comandos precisam ser executados em um ambiente ou diretório específico. Se cada comando for executado em um subshell diferente, não há risco de que as configurações das variáveis ​​sejam confundidas. Na conclusão, as configurações e o diretório atual não precisam ser restaurados, pois o ambiente do processo pai não é afetado por nenhum de seus subprocessos. Os subshells funcionam com definições de funções, muitas vezes executáveis ​​com parâmetros diferentes.