Impressu Tutà Esse Mane Sottuturianu Permezz Bash Scripts

Cumu Instruct Subshells per esse in Parallel in the Background

Un inturnianza hè una interfaccia bàsica per intérieure comandos in un sistema Linux. Con ellu, pudete scrive u cumandimu o indetta un schedariu chì guariscenu una sequenza di cumandamenti per esse esercitu. I cunchi anu organizatu in una ghjerarchia, è qualsiasi casca puderà creà una nova cunghjilla. U novu cascu hè cunzidiratu un prucessu di zitellu, un sughjettu di u casu principale chì ci crea.

Per una prima, un sughjettu hè dipendente à u so parent in u sensu chì se u prucessu parentale finisci, u subshell hè ancu terminatu. Ogni output hè passatu da u subshell à u cunnessu parent.

Cumu create un Subshell

In un scaricamentu di cunfessione di Bash, create un subshell cù a notazione parentesi:

#! / bin / bash echo "Prima di principià subshell" (count = 1 mentre [$ count -le 99] fate echo "$ count" sleep 1 ((count ++)) done) echo "Finished"

In l'esempiu, u ciclo intossu hè intravatu entre parèntesi, chì a causa di esse eseguitu in un subsuscenale di a cunghjilla in u questu u schedariu di scrittore hè eseguitu.

Funcione un Subshell in u fondo

Sè micca indicatu chì u subsunaghju hè esse esercitu in u sughjettu, a cume matriale aspetta per u subshell per finisce in prima di cuntinuà cù u restu di u script. In ogni casu, sè vo vulete currarà subsugli in parallelu, u cresce in u fondu, chì hè realizatu cù l'ampersandu caratteru seguitanu l'espressione subsuscente, cumu si mostra quì:

#! / bin / bash echo "Prima di principià subshell" (count = 1 mentre [$ count -le 99] fate echo "$ count" sleep 1 ((count ++)) done) & echo "Finished"

Esercitu Multiple Subshells in Parallel

Se create multiple subshells cum'è prucessi d' esempiu, puderanu esecutà e cumpetenze in parallelu. Hè tìpica, u sistema operatu utilizate diverse processadori o nuclei per ogni prucessu è sottopessione, assumi chì ci sò almenu tanti prucessori o nuclei chì ci sò processi. Inutili, i cumerci sò attribuiti à i stessi prucessori o nucli. In questu casu, u processatore o core cresce continuamente entre i funzioni asignati finu à chì e funzioni sò rializati. U vechju esempiu hà dui sottuccessi. U primu cunfessi di u 1 à 99 è u seconda da 1000 à 1099.

#! / bin / bash echo "Prima di principià subshell" (count = 1 mentre [$ count -le 99] fate echo "$ count" sleep 1 ((count ++)) made) & (count = 1000 while [$ count -le 1099] do echo "$ count" sleep 1 ((count ++)) done) & echo "Finished"

Aduprà l'affittu di stà à dì à u prucessu parentu d'aspittà chì i filleuliani per finisce u prucessu cù u restu di u script:

#! / bin / bash echo "Prima di principià subshell" (count = 1 mentre [$ count -le 99] fate echo "$ count" sleep 1 ((count ++)) made) & (count = 1000 while [$ count -le 1099] do echo "$ count" sleep 1 ((count + +)) done) & wait echo "Finished"

Usi per Subshells

I Subshells sò utili meta i cumandamenti deve esse esercitu nantu à un ambientu o un regnu particulari. Se ogni cumannamentu hè esecutatu in un subsuscenu diffustu, ùn hè micca risicu per quessa a parametrizazione varià chì si cunfundanu. Quandu si cumpiuse, i paràmetri è l'annuariu attuali ùn deve micca esse ritenutu, chì l'ambienti di u prucessu parentali ùn hè micca affettivu di alcuni sianu sottoprini.

Subshells ponu esse usatu in definizzioni di funzione per questi si pò esse esercitu parechje volte cù parechji paràmetri.