Léieren Wéi richteg Suen ausschécken Utiliseieren vu Bash Scripte

Wéi léiert Dir SubShells fir Parallel am Background ze lafen

E Shell ass eng Basisfaarf fir Befehle vun engem Linux System z'erreechen. Mat der Dir kënnt e Kommando direkt uginn oder e Fichier (Skript) spezifizéieren deen eng Rei vun Kommandoen enthält déi ausgefouert gëtt. Shells ginn an enger Hierarchie organiséiert, an all Shell kënnt eng nei Shell erstallt. De neie Schock gëtt als Kandprozezensprooch - e Subschuel - vun der Elterendeel déi et mécht.

Par défaut gëtt e Subschuel u sengem Elterendeel berüchtegt an deem Sënn datt wann den Elterendexterchance ofgeschloss ass, ofschreift och de Subschaarf. All Ausgab ass duerch d'Ënnerhalung vun der Elterendeel verdeelt.

Wéi ee Subshell erstellt

An engem Bash Shell-Skript erstellen mir eng Ënnerhalung mat der Ënnerhalterung vun den Elteren:

# !/ bin / bash echo "Virun Ufankshëllef" (count = 1 wann [$ count -le 99] ech ech "count count" schlofen 1 ((count ++)) gemaach) Echo "Ofgeschloss"

Am Beispiller gëtt déi laang Reguléierung an der Klouschterklappe geschwat, déi d'Ursaachen an engem Ënnerhandel vun der Shell, wou d'Skriptdatei ausgeführt gëtt.

Fëllt e Subshell am Background

Wann Dir do notéiert datt den Ënnerdeel am Hannergrond ausgezeechent ginn ass, waart d'Eltere Shell fir den Ënnerhandel unzeginn, ier Dir mat dem Rescht vum Skript weiderfuere wëllt. Awer wann Dir Ënnerräich parallel parfait wënscht, gitt Dir se am Hannergrond, déi mat dem Ampersand-Zeeche no der subshell Ausdréck erofgesat gëtt, wéi et hei steet:

# !/ bin / bash echo "Wann Dir e Schirm entwéckelt" (count = 1 wann [$ count -le 99] ech ech "count count" schlofen 1 ((count ++)) gemaach) & echo "Ofgeschloss"

Läffel Multiple Subshells an Parallel

Wann Dir e puer Ënnerschrëften als Background Prozesser schreift , kënnt Dir Aufgaben parallell lafen. Normalerweis benotzt de Betreiungssystem verschidde Prozesser oder Core fir all Prozess a Subprozess, datt et op d'mannst esou vill Prozesser a Kerne gëtt wéi et Prozesser sinn. Sinn déi Aufgaben op déi selwescht Prozessoren oder Core'en zougewielt. An deem Fall ännert de Prozesser oder den Core kontinuéierlech tëscht den zugewierwenen Aufgaben, bis d'Aufgaben fäerdeg sinn. De nächste Beispill huet zwee Subprozeduren. Déi éischt zielt tëscht 1 an 99, an den zweete vun 1000 bis 1099.

# !/ bin / bash echo "Fänkt of. subchell" (count = 1 wann [$ count -le 99] ech ech "count count" sleep 1 ((count ++)) gemaach) & (count = 1000 while [$ count -le 1099] ech "count count" schlofen 1 ((count ++)) gemaach) & Echo "Ofgeschloss"

Mat der Waasserversaatz benotze fir den Elterendeel ze erzielen fir d'Subprocesses ze warten, ier Dir mat dem Rescht vum Script ofleeft:

# !/ bin / bash echo "Fänkt of. subchell" (count = 1 wann [$ count -le 99] ech ech "count count" sleep 1 ((count ++)) gemaach) & (count = 1000 while [$ count -le 1099] ech "count count" schlofen 1 ((count ++)) gemaach) & echo "finished"

Gebrauch fir Subshells

Subshells sinn nëtzlech, wann d'Befehre an enger bestëmmter Ëmwelt oder Verëffentlechung ausgeführt ginn. Wann all Kommando an engem aneren Ënnerhalter ausgeführt gëtt, gëtt et keen Risiko datt variabel Astellungen mëschgemaach ginn. No der Vervollstännegung sinn d'Astellungen an de aktuellen Verwalten net restauréiert ginn, well d'Ëmwelt vum Mère-Prozess net vun engem vun hiren Subprozeduren betruecht gëtt.

Ënnerdeelunge kënnen an Fundefinitiounen benotzt ginn fir datt se méi oft mat verschiddene Parameteren ausgeführt ginn kënnen.