Uzziniet, kā pareizi palaist apakšsekcijas, izmantojot Bash skriptus

Kā uzdot subshells darboties paralēli fonā

Apvalks ir pamata saskarne komandu ievadīšanai Linux sistēmā. Ar to jūs varat tieši ievadīt komandu vai norādīt failu (skriptu), kurā ir izpildāmo komandu secība. Korpusus organizē hierarhijā, un jebkurš čaulas var izveidot jaunu apvalku. Jaunā čaula tiek uzskatīta par bērna procesu, kas ir apakšslāņa, no vecās čaulas, kas to izveido.

Pēc noklusējuma apakšslānis ir atkarīgs no tā vecāka tādā nozīmē, ka, ja mātes process beidzas, apakšslīnis arī beidzas. Jebkura izeja tiek nodota no apakšshēmas uz vecāku čaulu.

Kā izveidot apakšsekciju

Bash apvalka skriptā izveidojat apakšslodzi, izmantojot iekavās apzīmējumu:

#! / bin / bash echo "Pirms sākat apakšslodzi" (skaits = 1, kamēr [$ count -le 99] do echo "$ count" miegs 1 ((count ++)) pabeigts) echo "Finished"

Piemēram, cilnes secība tiek ievietota iekavās, un tas izraisa tā izpildi apvalkā, kurā tiek izpildīts skripta fails.

Apakšnodaļas palaišana fonā

Ja vien neesat norādījis, ka fona apakšnodaļa jāizpilda, galvenā čaula jāgaida, lai apakšslodze būtu pabeigta, pirms turpināt izmantot pārējo skriptu. Tomēr, ja vēlaties paralēli palaist apakšslodzes, tos palaižat fonā, kas tiek izpildīts ar ampersādes rakstzīmi pēc apakšslēguma izteiksmes, kā parādīts šeit:

#! / bin / bash echo "Pirms sākuma apakšslodzes" (count = 1, kamēr [$ count -le 99] do echo "$ count" miegs 1 ((count ++)) pabeigts) un echo "Finished"

Vairāku apakšslodžu darbināšana paralēli

Ja izveidojat vairākas apakšslodzes kā fona procesus , jūs varat palaist uzdevumus paralēli. Raksturīgi, ka operētājsistēma izmanto dažādus procesorus vai serdeņus katram procesam un apakšprocesai, pieņemot, ka procesoriem vai serdeņiem ir vismaz tikpat daudz procesa. Pretējā gadījumā uzdevumi tiek piešķirti tiem pašiem procesoriem vai kodoliem. Tādā gadījumā procesors vai kodols nepārtraukti pārslēdzas starp piešķirtajiem uzdevumiem, kamēr uzdevumi nav pabeigti. Nākamais piemērs ir divas apakšprocesas. Pirmais skaitlis ir no 1 līdz 99, otrais - no 1000 līdz 1099.

#! / bin / bash echo "Pirms sākat subhell" (count = 1, kamēr [$ count -le 99] do echo "$ count" miega 1 ((count ++)) pabeigts) & (count = 1000, kamēr [$ count -le 1099] do echo "$ count" miega 1 ((count ++)) pabeigts) un echo "Finished"

Lai turpinātu pārējā skripta izpildi, izmantojiet gaidīšanas pārskatu, lai informētu mātes procesu par gaidīšanu apakšprocesu pabeigšanai:

#! / bin / bash echo "Pirms sākat subhell" (count = 1, kamēr [$ count -le 99] do echo "$ count" miega 1 ((count ++)) pabeigts) & (count = 1000, kamēr [$ count -le 1099] do echo "$ count" miega 1 ((count ++)) pabeigts) un pagaidiet echo "Finished"

Izmantošana apakšslodēs

Subshells ir noderīgi, ja komandas ir jāizpilda noteiktā vidē vai direktorijā. Ja katra komanda tiek izpildīta citā apakšshēmā, nav nekādu risku mainīt iestatījumus. Pēc pabeigšanas nav nepieciešams atjaunot iestatījumus un pašreizējo direktoriju, jo neviena no tā apakšprocesēm neietekmē vecāku procesa vidi.

Subshells var izmantot funkciju definīcijās, lai tos varētu izpildīt vairākas reizes ar dažādiem parametriem.