Naučite kako pravilno raditi pomoćne kartice koristeći Bash skripte

Kako izraditi podloge za pokretanje paralelno u pozadini

Šuk je osnovni interfejs za unos komandi na Linux sistem. Pomoću njega možete direktno da unesete komandu ili navedete datoteku (skriptu) koja sadrži niz komandi za izvršavanje. Školjke su organizovane u hijerarhiji, a svaka granata može stvoriti novu školjku. Nova ljuska se smatra dečijim procesom - podgrupom - od roditeljske školjke koja ga stvara.

Podrazumevano, poddrška zavisi od njegovog roditelja u smislu da ako se roditeljski proces završi, poddrška se takođe prekida. Svaki izlaz se prenosi iz podgrupe do roditeljske ljuske.

Kako kreirati podgrupu

U Bash shell skripti, kreirate podshell koristeći notu zagrade:

#! / bin / bash echo "Pre pokretanja podslona" (broj = 1 dok [$ count -le 99] echo "$ count" sleep 1 ((count ++)) done) echo "Finished"

U primjeru, petlje petlje je zatvoreno u zagradi, što ga uzrokuje izvršavanje u podskupu shell-a u kojoj se izvršava skripta.

Pokretanje podsektora u pozadini

Osim ako ne navedete da se podskupica izvršava u pozadini, roditeljska školjka čeka da se završi podslužba pre nego što nastavite sa ostatkom skripte. Međutim, ako želite paralelno pokrenuti podgrupe, pokrenete ih u pozadini, što se postiže ampersand karakterom koji sledi pod izrazom podvrsta, kao što je prikazano ovdje:

#! / bin / bash echo "Prije pokretanja podshella" (broj = 1 dok [$ count -le 99] echo "$ count" done 1) (& count ++))) & echo "Finished"

Pokretanje višestrukih podsliha u paralelnom okruženju

Ako kreirate više pretpostavki kao pozadinski procesi , možete pokrenuti zadatke paralelno. Tipično, operativni sistem koristi različite procesore ili jezgre za svaki proces i podproces, pod pretpostavkom da ima najmanje toliko procesora ili jezgara pošto postoje procesi. U suprotnom, zadaci se dodeljuju istim procesorima ili jezgrima. U tom slučaju procesor ili jezgro neprekidno prelaze između zadatih zadataka dok se zadaci ne završe. Sledeći primjer ima dva podprocesa. Prvi broji od 1 do 99, a drugi od 1000 do 1099.

#! / bin / bash echo "Prije pokretanja podslona" (broj = 1 dok [$ count -le 99] echo "$ count" sleep 1 ((count ++)) done) & (count = 1000 dok [$ count -le 1099] echo "$ count" sleep 1 ((count ++))) & echo "Finished"

Koristite izjavu čekanja da biste roditeljskom procesu rekli da čekaju da se podprocesi završe pre nego što nastavite sa ostatkom skripte:

#! / bin / bash echo "Prije pokretanja podslona" (broj = 1 dok [$ count -le 99] echo "$ count" sleep 1 ((count ++)) done) & (count = 1000 dok [$ count -le 1099] echo "$ count" sleep 1 ((count ++))) i čekati echo "Završeno"

Koristi se za Subshells

Subshells su korisni kada komande moraju biti izvršene u određenom okruženju ili direktoriju. Ako svaka naredba bude izvršena u drugoj podskupini, ne postoji rizik da se promenljiva podešavanja izmijeste. Po završetku, podešavanja i trenutni direktorijum ne moraju biti vraćeni, pošto okruženje roditeljskog procesa ne utiče na bilo koji njegov podproces.

Subshells se mogu koristiti u definicijama funkcija tako da se mogu izvršavati više puta sa različitim parametrima.