Научете как правилно да стартирате подводни колони чрез използване на скриптове Bash

Как да инструктирам подсилванията да се изпълняват паралелно на заден план

Обвивката е основен интерфейс за въвеждане на команди на Linux система. С него можете директно да въведете команда или да зададете файл (скрипт), който съдържа последователност от команди, които да бъдат изпълнени. Корпусите са организирани в йерархия и всяка обвивка може да създаде нова обвивка. Новата обвивка се счита за детешки процес - подобщ - на главната черупка, която я създава.

По подразбиране, поддръжката зависи от нейния родител в смисъл, че ако родителският процес завърши, подхватът също се прекратява. Всеки изход се предава от подлежащата на главната черупка.

Как да създадете subshell

В скрипт Bash shell, създавате подосърд с помощта на скобата:

(count = 1 докато [$ count -le 99] направи ехо "$ count" сън 1 ((брой ++))) echo "Finished"

В примера цикълът е затворен в скоби, което го кара да бъде изпълнено в подлеп на обвивката, в която се изпълнява скриптовия файл.

Пускане на подскача в заден план

Освен ако не посочите, че подсингът трябва да се изпълни във фонов режим, родителската колона чака да завърши поддръжката, преди да продължи с останалата част от скрипта. Ако обаче искате да изпълнявате паралелно подменютата, изпълнявате ги във фонов режим, което се извършва с амперсандския символ след израза на подлепващия елемент, както е показано тук:

# count / 1 echo "преди да започнете поддръжката" (брой = 1 докато [$ count -le 99] направи ехо "$ count" сън 1 ((брой ++))) & echo "Finished"

Работещи множество подсъединители в паралелни

Ако създавате няколко подкласа като фонови процеси , можете да изпълнявате задачи паралелно. Обикновено операционната система използва различни процесори или ядра за всеки процес и подпроцес, като се има предвид, че има поне толкова процесори или ядра, колкото и процесите. В противен случай задачите се задават на същите процесори или сървъри. В този случай процесорът или ядрото непрекъснато превключва между зададените задачи, докато задачите не приключат. Следващият пример има две подпроцеси. Първият е от 1 до 99, а вторият от 1000 до 1099.

(count = 1, докато [$ count -le 99] направи echo "$ count" sleep 1 ((count ++))) (count = 1000 докато [$ count -le 1099] направи ехо "$ count" сън 1 ((брой ++)) направи & echo "Finished"

Използвайте изявлението за изчакване , за да кажете на родителския процес да изчака да завърши подпроцесите, преди да продължи с останалата част от скрипта:

(count = 1, докато [$ count -le 99] направи echo "$ count" sleep 1 ((count ++))) (count = 1000 докато [$ count -le 1099] направете ехо "$ count" сън 1 ((брой ++))) и изчакайте echo "Finished"

Използва за подсистеми

Групите са полезни, когато командите трябва да се изпълняват в конкретна среда или директория. Ако всяка команда се изпълнява в различна поддържка, няма риск променливите настройки да бъдат смесени. След като завършите, настройките и текущата директория не е необходимо да бъдат възстановени, тъй като средата на родителския процес не се влияе от никоя от нейните подпроцеси.

Групите могат да се използват в дефинициите на функциите, така че да могат да се изпълняват няколко пъти с различни параметри.