Opi käyttämään asianmukaisia ​​liittymiä käyttämällä Bash-komentojonotiedostoja

Kuinka neuvotella subshellit toimimaan rinnakkain taustalla

Kuori on perusliitäntä komentoja varten Linux-järjestelmään. Sen avulla voit kirjoittaa komennon suoraan tai määrittää tiedoston (komentosarja), joka sisältää sekvenssin suoritettavien komentoiden. Shellit on järjestetty hierarkiassa ja kaikki kuoret voivat luoda uuden kuoren. Uusi kuori pidetään vanhemman kuoren lapsiprosessina, joka luo sen.

Oletusarvoisesti alalohko on riippuvainen sen vanhemmasta siinä mielessä, että jos emoprosessi päättyy, alitaso päättyy myös. Kaikki lähdöt siirretään alikerroksesta emolevylle.

Kuinka luoda Subshell

Bash-shell-komentosarjan yhteydessä luodaan alikerroksen sulkeissa olevan merkinnän avulla:

#! / bin / bash echo "Ennen aloitusryhmän käynnistämistä" (count = 1 kun [$ count -le 99] echo "$ count" sleep 1 ((count ++)

Esimerkissä, kun taas silmukka on sulkeutunut sulkeihin, mikä saa sen suoritetuksi komentotiedostokansion shellissa.

Subshellin käyttäminen taustalla

Ellet määrittele, että alitaso on suoritettava taustalla, vanhempi kuori odottaa, että alitaso loppuu ennen kuin se jatkaa komentosarjan loppua. Jos haluat kuitenkin suorittaa rinnakkaisia ​​alitustasoja, käytät niitä taustalla, joka toteutetaan ala-ilmaisun jälkeisellä ampersand-merkillä, kuten tässä on esitetty:

#! / bin / bash echo "Ennen aloitusryhmän käynnistämistä" (count = 1 kun [$ count -le 99] echo "$ count" sleep 1 ((count ++)

Useiden rinnakkaisten liittimien käyttäminen

Jos luot useita taustatietoja taustaprosesseiksi , voit suorittaa tehtäviä samanaikaisesti. Tyypillisesti käyttöjärjestelmä käyttää eri prosessoreita tai ytimiä jokaiselle prosessille ja osaprosessille olettaen, että on olemassa ainakin yhtä monta prosessoria tai ytimestä kuin on prosesseja. Muutoin tehtävät osoitetaan samoille prosessoreille tai ytimille. Tällöin prosessori tai ydin vaihtaa jatkuvasti osoitettujen tehtävien välillä, kunnes tehtävät on suoritettu. Seuraavassa esimerkissä on kaksi osaprosessia. Ensimmäinen laskee 1: stä 99: een ja toinen 1000: sta 1099: een.

#! / bin / bash echo "Ennen alkutason aloittamista" (count = 1 kun [$ count -le 99] echo "$ count" sleep 1 ((count ++) 1099] echo "$ count" sleep 1 ((count ++)) tehty) & kaiku "Valmis"

Käytä odotusosaa kertoaksesi vanhemman prosessin odottamaan aliprosessien lopettamisen ennen kuin jatkat muita komentosarjoja:

#! / bin / bash echo "Ennen alkutason aloittamista" (count = 1 kun [$ count -le 99] echo "$ count" sleep 1 ((count ++) 1099] echo "$ count" sleep 1 ((count ++)) tehty) ja odota echo "Valmis"

Käyttötarkoitukset Subshellsille

Subshellit ovat hyödyllisiä, kun komentoja on suoritettava tietyssä ympäristössä tai hakemistossa. Jos jokainen komento suoritetaan eri alalohkossa, ei ole vaaraa, että muuttujat asetetaan sekaisin. Kun asetukset on suoritettu loppuun, nykyistä hakemistoa ei tarvitse palauttaa, koska sen aliprosessit eivät vaikuta emopro- sessin ympäristöön.

Subshells-funktioita voidaan käyttää funktion määritelmissä, jotta niitä voidaan suorittaa useita kertoja eri parametreilla.