Saznajte kako pravilno pokrenuti Subshells korištenjem skripti Bash

Kako uputiti Subshells da rade paralelno u pozadini

Shema je osnovno sučelje za unos naredbi na Linux sustav. Pomoću nje možete izravno unijeti naredbu ili odrediti datoteku (skriptu) koja sadrži niz naredbi koje treba izvršiti. Shellovi su organizirani u hijerarhiji, a svaka ljuska može stvoriti novu ljusku. Nova školjka smatra se procesom djeteta - podgrupe - matične ljuske koja ga stvara.

Prema zadanim postavkama, podskup podrazumijeva njegov roditelj u smislu da ako završi roditeljski proces, podružnica se također prekida. Bilo koji izlaz premješten je iz podgrupe na glavnu ljusku.

Kako stvoriti Subshell

U skripti skupa Bash kreirajte podrume pomoću zaglavlja zagrade:

#! / bin / bash echo "Prije početka subshell" (count = 1 dok [$ count -le 99] echo "$ count" sleep 1 ((count ++)) učinjeno echo "Finished"

U primjeru, petlja je zatvorena u zagradama, što uzrokuje da se izvršava u podskupu ljuske u kojoj se izvršava skripta.

Pokretanje Subshell u pozadini

Ako ne odredite da se temeljni okvir izvodi u pozadini, matična školjka čeka završetak završetka potpore prije nastavka s ostatkom skripte. Međutim, ako želite paralelno pokrenuti podgrupe, pokrenite ih u pozadini, što se postiže znakom i znakom koji slijedi izraz iz podgrupa, kako je prikazano ovdje:

# # / bin / bash echo "Prije početka subshell" (count = 1 dok [$ count -le 99] echo "$ count" spavanje 1 ((count ++)) učinjeno) & echo "Finished"

Pokretanje višestrukih pretplata u paralelnom

Ako stvorite više pretplata kao pozadinske procese , možete pokrenuti zadatke paralelno. Tipično, operacijski sustav koristi različite procesore ili jezgre za svaki proces i podproces, uz pretpostavku da ima barem onoliko procesora ili jezgri, kao što postoje procesi. Inače, zadatci se dodjeljuju istim procesorima ili jezgrama. U tom slučaju, procesor ili jezgra kontinuirano se prebacuje između dodijeljenih zadataka dok se zadaci ne dovrše. Sljedeći primjer ima dva podprocesa. Prvi broji od 1 do 99, a drugi od 1000 do 1099.

[count count = 99] echo "$ count" spavanje 1 ((count ++)) učinjeno) & (count = 1000, dok [$ count -le 1099] echo "$ count" spavanje 1 ((count ++)) učinjeno) & echo "Finished"

Upotrijebite čekanje da biste roditelju pričekali da završi s podprocesom prije nastavka s ostatkom skripte:

[count count = 99] echo "$ count" spavanje 1 ((count ++)) učinjeno) & (count = 1000, dok [$ count -le 1099] echo "$ count" sleep 1 ((count ++)) učinjeno) i pričekajte echo "Finished"

Koristi za Subshells

Subshells su korisni kada se naredbe moraju izvršiti u određenom okruženju ili direktoriju. Ako se svaka naredba izvodi u različitoj podgrupi, nema rizika da će se promjenjive postavke miješati. Po završetku, postavke i trenutni direktorij ne moraju biti vraćeni jer okoliš nadređenog procesa ne utječe ni u jednom od njegovih podprocesa.

Subshells se mogu koristiti u definicijama funkcija, tako da se mogu izvršiti više puta s različitim parametrima.