Научите како правилно радити подлоге користећи Басх скрипте

Како да подесите подгрупе за покретање паралелно у позадини

Шук је основни интерфејс за унос команди на Линук систем. Са њим можете директно да унесете команду или наведете датотеку (скрипту) која садржи низ команди за извршавање. Шкољке су организоване у хијерархији, а свака граната може створити нову шкољку. Нова љуска се сматра дечијим процесом - подгрупом - од родитељске шкољке која га ствара.

Подразумевано, подсклоп зависи од његовог родитеља у смислу да ако се родитељски процес заврши, поддршка се такође завршава. Сваки излаз се преноси из подгрупе до родитељске љуске.

Како креирати подкупу

У Басх схелл скрипти, креирате поддршку помоћу записа загради:

#! / бин / басх ецхо "Пре покретања подсхелла" (број = 1 док [$ цоунт -ле 99] ецхо "$ цоунт" слееп 1 ((цоунт ++)) доне) ецхо "Финисхед"

У примјеру, петље петље је затворено у загради, што доводи до тога да се изврши у подскупу схелл-а у којој се извршава скрипта.

Покретање подсектора у позадини

Осим ако не наведете да се подскупица извршава у позадини, родитељска шкољка чека да се заврши подслужба пре него што наставите са остатком скрипте. Међутим, ако желите паралелно покренути подскупине, покренете их у позадини, што се постиже знаком амперсанд који следи израз подврста, као што је приказано овде:

#! / бин / басх ецхо "Пре покретања подсхелла" (број = 1 док [$ цоунт -ле 99] ецхо "$ цоунт" спавање 1 ((број ++))) & ецхо "Финисхед"

Покретање вишеструких подслиха у паралелној

Ако креирате више поддршаваца као позадинске процесе , можете покренути задатке паралелно. Обично оперативни систем користи различите процесоре или језгре за сваки процес и подпроцес, под претпоставком да има најмање толико процесора или језгара пошто постоје процеси. У супротном, задаци се додељују истим процесорима или језгрима. У том случају, процесор или језгро непрекидно прелазе између задатих задатака док се задаци не заврше. Следећи пример има два подпроцеса. Први броји од 1 до 99, а други од 1000 до 1099.

#! / бин / басх ецхо "Пре почетка подславе" (број = 1 док [$ цоунт -ле 99] ецхо "$ цоунт" слееп 1 ((цоунт ++)) доне) & (цоунт = 1000 док [$ цоунт -ле 1099] ецхо "$ цоунт" слееп 1 ((цоунт ++)) доне) & ецхо "Финисхед"

Користите изјаву чекања да бисте родитељском процесу рекли да чекају да подпроцеси заврше пре него што наставите са остатком скрипте:

#! / бин / басх ецхо "Пре почетка подславе" (број = 1 док [$ цоунт -ле 99] ецхо "$ цоунт" слееп 1 ((цоунт ++)) доне) & (цоунт = 1000 док [$ цоунт -ле 1099] ецхо "$ цоунт" слееп 1 ((цоунт ++)) направи) & ваит ецхо "Финисхед"

Користи се за Субсхеллс

Субсхеллс су корисни када команде морају бити извршене у одређеном окружењу или директорију. Ако је свака наредба извршена у другој подскупини, не постоји ризик да се променљива подешавања помешају. По завршетку, подешавања и тренутни директоријум не морају бити враћени, пошто окружење родитељског процеса није под утицајем било ког од његових подпроцеса.

Субсхеллс се могу користити у дефиницијама функција тако да се могу извршавати више пута са различитим параметрима.