Ikasi nola behar bezala exekutatu Subshells Bash scriptak erabiliz

Nola instrukzionatu Subshells ataleko paraleloan exekutatzeko

Komandoak Linux sistemako komandoak sartzeko oinarrizko interfazea da. Honekin batera, komando bat sar dezakezu zuzenean edo exekutatu beharreko komando-sekuentzia bat duen fitxategi bat (script) zehazten du. Shells hierarkian antolatuta daude, eta shell batek shell berri bat sor dezake. Shell berria haurraren prozesu bat dela uste da, sortzen duen guraso-shellaren azpisektorea.

Lehenespenez, subshell bat bere gurasoaren menpe dago zentzuan guraso prozesua amaitzen bada, subshell ere bukatzen da. Irteera subshell-etik guraso-shelletik pasatzen da.

Nola sortu Subshell bat

Bash shell script batean, subshell bat sortzen duzu parentesiaren notazioa erabiliz:

#! / bin / bash echo "Subshell abiarazi aurretik" (count = 1 bitartean [$ count -le 99] echo "$ count" sleep 1 ((count ++) egin) echo "amaitutakoa"

Adibidez, bitartean begizta parentesi artean dago, script-a exekutatzen den shellaren subshell batean exekutatzen dela.

Atzeko planoan Subshell bat exekutatzen

Subshell atzeko planoan exekutatzeko zehazten ez bada behintzat, gurasoarengandik azpitituluak geratzen zaizkio gainerako script-ekin jarraitu aurretik. Hala ere, subshells exekutatu nahi badituzu paraleloan, atzeko planoan exekutatzen baduzu, subshell adierazpenaren arabera ampersand karakterearekin lortzen da, hemen agertzen den bezala:

#! / bin / bash echo "Subshell abiarazi aurretik" (count = 1 bitartean [$ count -le 99] echo "$ count" sleep 1 ((count ++) egin) eta echo "amaitutakoa"

Multzoko Subshells en paraleloan

Subshells hainbat background prozesu gisa sortzen badituzu, lanak paraleloan exekutatu ditzakezu. Normalean, sistema eragileak prozesadore edo nukleoak erabiltzen ditu prozesu eta azpiprozesu bakoitzerako, prozesuak edo nukleoak badira gutxienez prozesuak badira ere. Bestela, zereginak prozesadore edo nukleore berak esleitzen zaizkie. Kasu horretan, prozesadoreak edo coreek etengabe aldatzen dituzte esleitutako zereginen artean zereginak bete arte. Hurrengo adibidea bi azpiprozesu ditu. Lehenengoa 1etik 99ra bitartekoa da eta bigarrena 1000tik 1099ra bitartekoa.

#! / bin / bash echo "Subshell abiarazi aurretik" (count = 1 bitartean [$ count -le 99] echo "$ count" sleep 1 ((count ++) egin da) & (count = 1000 [$ count -le 1099] echo "$ count" sleep 1 ((count ++)) done) & echo "amaitutakoa"

Erabil itzazu itxaroteko instrukzioak guraso prozesua azpitituluak itxarotzeko script bukatu aurretik aurrera egiteko:

#! / bin / bash echo "Subshell abiarazi aurretik" (count = 1 bitartean [$ count -le 99] echo "$ count" sleep 1 ((count ++) egin da) & (count = 1000 [$ count -le 1099] echo "$ count" sleep 1 ((count ++)) egin da) eta itxaron echo "amaitutakoa"

Subshells erabiltzen ditu

Subshells erabilgarriak dira komandoak ingurune edo direktorio jakin batean exekutatzeko behar direnean. Komando bakoitza subshell desberdin batean exekutatzen bada, ez dago arriskurik ezarpen ezberdina nahastuko denik. Bukatzean, ezarpenak eta uneko direktorioa ez dira berreskuratu behar, guraso-prozesuaren ingurunea ez baita bere azpiprozesuek eragiten.

Subshells funtzioaren definizioetan erabil daitezke hainbat parametro ezberdinetan exekutatu ahal izateko.