Skip to main content

Bash Subshells un paralēla apstrāde

Anonim

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. Jebkurš produkts tiek nodots no apakšshēmas uz vecāku čaulu.

Kā izveidot apakšsekciju

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

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 tiek izpildīta, galvenā čaula gaida, ka apakšslodze tiks pabeigta, pirms turpināsit pārējā skripta. 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:

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.

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:

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.