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.