Prečítajte si, ako správne spustiť podsúbory pomocou skriptov Bash

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.