Ako naučiť podsústavy, ktoré sa majú spustiť v paralelnom prostredí
Plášť je základným rozhraním pre zadávanie príkazov v systéme Linux. Pomocou toho môžete priamo zadávať príkaz alebo špecifikovať súbor (skript), ktorý obsahuje sekvenciu príkazov, ktoré sa majú vykonať. Kocky sú usporiadané v hierarchii a každý shell môže vytvoriť nový shell. Nový shell je považovaný za podradený proces - podsúbka - materského shellu, ktorý ho vytvára.
Štandardne je subshell závislá na jej nadradenej v tom zmysle, že ak rodičovský proces skončí, podsvetie sa tiež ukončí. Každý výstup je odovzdaný z podsúboru do nadradeného shell.
Ako vytvoriť podsúbor
V skripte Bash shellu vytvoríte podkategóriu pomocou zátvorky:
# count / 1 echo "pred spustením podsvetia" (počet = 1 zatiaľ čo [$ count -le 99] urobí echo "$ count" spánok 1 ((count ++)) done) echo "V príklade je cyklus while uzavretý v zátvorkách, čo spôsobuje, že sa vykonáva v podsúbore shell, v ktorom je spustený súbor skriptu.
Spustenie podsúboru na pozadí
Ak neurčíte, že má byť subshell vykonané na pozadí, rodičovský shell čaká na dokončenie podsveti pred pokračovaním s ostatným skriptom. Ak však chcete spustiť podsúbory paralelne, spustíte ich na pozadí, čo sa uskutoční pomocou znaku ampersand, ktorý nasleduje po výrazoch subshell, ako je to znázornené na obrázku:
# count / 1 echo "pred spustením podsvetia" (počet = 1 zatiaľ čo [$ count -le 99] urobí echo "$ count" spánok 1 ((count ++)) done & echo "Spúšťanie viacerých podsúl v paralelnom režime
Ak vytvárate viaceré podsúbory ako procesy na pozadí, môžete spustiť úlohy paralelne. Operačný systém obvykle používa rôzne procesory alebo jadrá pre každý proces a podproces za predpokladu, že existuje aspoň toľko procesorov alebo jadier ako procesy. V opačnom prípade sú úlohy priradené rovnakým procesorom alebo jadrom. V takom prípade procesor alebo jadro nepretržite prepína medzi priradenými úlohami až do dokončenia úloh. Nasledujúci príklad má dve podprocesy. Prvá sa počíta od 1 do 99 a druhá od 1000 do 1099.
# count -le 99 "echo" # count -le 99 "echo" # count -le 99 "spočiatku" $ count -le 99 " 1099] urobiť echo "$ count" spánok 1 ((count ++)) done & echo "Finished"Použitie príkazu čakať na oznámenie rodičovského procesu čakať, kým podprocesy skončia, skôr ako budete pokračovať s ostatným skriptom:
# count -le 99 "echo" # count -le 99 "echo" # count -le 99 "spočiatku" $ count -le 99 " 1099] urobiť echo "$ count" spánok 1 ((count ++)) done) & čakať echo "Finished"Použitie pre podsústavy
Podsystémy sú užitočné, keď je potrebné vykonať príkazy v konkrétnom prostredí alebo adresári. Ak je každý príkaz vykonaný v inej podružnej vrstve, nie je riziko, že sa premenné nastavenia zmiešajú. Po dokončení sa nastavenia a aktuálny adresár nemusia obnoviť, pretože prostredie rodičovského procesu nie je ovplyvnené žiadnou zo svojich podprocesov.
V definíciách funkcií sa môžu používať podsústavy, takže je možné ich vykonať viackrát s rôznymi parametrami.