Et skall er et grunnleggende grensesnitt for å skrive inn kommandoer på et Linux-system. Med det kan du skrive inn en kommando direkte eller spesifisere en fil (script) som inneholder en rekke kommandoer som skal utføres. Skjell er organisert i et hierarki, og ethvert skall kan skape et nytt skall. Det nye skallet regnes som en barneprosess, en delhull av foreldrehyllet som skaper det.
Som standard er en subshell avhengig av overordnet i den forstand at hvis foreldreprosessen avsluttes, slutter subshellet også. En hvilken som helst utgang er sendt fra underskallet til foreldre skallet.
Slik lager du en delhule
I et Bash-shell-skript oppretter du en delhull med parentesnotering:
I eksemplet er innløpsløftet innelukket i parentes, noe som får det til å bli utført i et underskall av skallet der skriptfilen utføres.
Kjører en delhull i bakgrunnen
Med mindre du spesifiserer at delhyllen skal utføres i bakgrunnen, venter påhylleskallen for at delhyllen skal fullføres før du fortsetter med resten av skriptet. Men hvis du vil kjøre subshells parallelt, kjører du dem i bakgrunnen, som er oppnådd med ampersand-karakteren etter subshell-uttrykket, som vist her:
Kjører flere subshells i parallell
Hvis du lager flere subshells som bakgrunnsprosesser, kan du kjøre oppgaver parallelt. Typisk bruker operativsystemet forskjellige prosessorer eller kerner for hver prosess og delprosess, forutsatt at det er minst like mange prosessorer eller kerner som det er prosesser. Ellers oppgis oppgaver til samme prosessorer eller kjerner. I så fall bytter prosessor eller kjerne kontinuerlig mellom de tildelte oppgavene til oppgavene er fullført. Det neste eksemplet har to delprosesser. Den første teller fra 1 til 99, og den andre er fra 1000 til 1099.
Bruk ventetiden til å fortelle foreldreprosessen å vente på at delprosessene skal fullføres før du fortsetter med resten av skriptet:
Bruker for subshells
Subshells er nyttige når kommandoer må utføres i et bestemt miljø eller katalog. Hvis hver kommando utføres i et annet underskall, er det ingen risiko for at variable innstillinger blir blandet opp. Etter ferdigstillelse behøver ikke innstillingene og gjeldende katalog å bli gjenopprettet, fordi miljøet i overordnet prosess ikke påvirkes av noen av delprosessene.
Subshells kan brukes i funksjonsdefinisjoner slik at de kan utføres flere ganger med forskjellige parametere.