Lærðu hvernig á að keyra Subshells með því að nota Bash forskriftir

Hvernig á að leiðbeina Subshells að hlaupa í hliðstæðu í bakgrunni

Skel er grunnviðmót til að slá inn skipanir á Linux kerfi. Með því er hægt að slá inn skipun beint eða tilgreina skrá (handrit) sem inniheldur röð skipana sem á að framkvæma. Skeljar eru skipulögð í stigveldi og allir skel geta búið til nýjan skel. Hin nýja skel er talin barnvinnsla-undirhúð-af foreldrisskelnum sem skapar það.

Sjálfgefið er skothylki háð foreldri þess í þeim tilgangi að ef foreldraferlið lýkur fellur skothylki einnig niður. Einhver framleiðsla er skilin frá skothylki til foreldris skel.

Hvernig á að búa til Subshell

Í Bash skells handriti stofnarðu skothylki með svigamynduninni:

#! / bin / bash echo "Áður en byrjun er hafin" (telja = 1 meðan [$ telja -la 99] gera echo "$ count" svefn 1 ((count ++)) gert) echo "Finished"

Í dæminu er meðan á lykkjan lokað í sviga, sem veldur því að það sé framkvæmt í skothylki skelinnar þar sem handritaskráin er framkvæmd.

Að keyra undirskel í bakgrunni

Nema þú tilgreinir að skothylki sé framkvæmt í bakgrunni, bíður foreldrisskel að undirskelnum sé lokið áður en þú heldur áfram með hvíld á handritinu. Hins vegar, ef þú vilt keyra subshells samhliða, hlaupir þú þá í bakgrunni, sem er búið til með ambersandpersónanum í kjölfar undirskiptatækisins, eins og sýnt er hér:

#! / bin / bash echo "Áður en byrjun er hafin" (telja = 1 meðan [$ telja -la 99] gera echo "$ count" svefn 1 ((count ++)) gert) og echo "Finished"

Að keyra margfeldi Subshells í samhliða

Ef þú býrð til margar subshells sem bakgrunnsferli getur þú keyrt verkefni samhliða. Venjulega notar stýrikerfið mismunandi örgjörvum eða kjarna fyrir hvert ferli og undirvinnslu, að því gefnu að það séu að minnsta kosti eins mörg örgjörvum eða kjarna eins og það eru ferli. Annars eru verkefni úthlutað sömu örgjörvum eða kjarna. Í því tilfelli skiptir örgjörvi eða kjarna stöðugt á milli úthlutaðra verkefna þar til verkefnin eru lokið. Næsta dæmi hefur tvær undirgerðir. Fyrsti maðurinn telur frá 1 til 99 og annarinn frá 1000 til 1099.

#! / bin / bash echo "Áður en byrjun er hafin" (telja = 1 á meðan [$ telja -le 99] gera echo "$ telja" svefn 1 ((telja + +)) gert) og (telja = 1000 á meðan [$ telja 1099] gera echo "$ count" sleep 1 ((count ++)) gert) og echo "Finished"

Notaðu bíða yfirlýsingu til að segja foreldraferlinu að bíða eftir að undirferlið sé lokið áður en haldið er áfram með handritið:

#! / bin / bash echo "Áður en byrjun er hafin" (telja = 1 á meðan [$ telja -le 99] gera echo "$ telja" svefn 1 ((telja + +)) gert) og (telja = 1000 á meðan [$ telja 1099] gera echo "$ count" sleep 1 ((count ++)) gert) og bíddu echo "Finished"

Notar fyrir Subshells

Subshells eru gagnlegar þegar skipanir þurfa að vera framkvæmdar í tilteknu umhverfi eða skrá. Ef hver skipun er framkvæmd í öðru undirshelli, er engin hætta á að breytilegar stillingar verði blandaðir saman. Að lokinni þarf ekki að endurnýja stillingarnar og núverandi skrá þar sem umhverfi foreldraferlisins er ekki fyrir áhrifum af einhverjum undirferlum hennar.

Subshells er hægt að nota í skilgreiningum aðgerða þannig að hægt sé að framkvæma þau oft með mismunandi breytum.