Баш сценарийлерді қолдану арқылы жазылғандарды қалай дұрыс іске қосуды үйреніңіз

Тармақтағы параллельде жұмыс істеуге үйрену

Қабық Linux жүйесінде командаларды енгізудің негізгі интерфейсі. Осыған орай, тікелей пәрменді енгізе аласыз немесе орындалатын командалардың қатарын қамтитын файлды (сценарийді) көрсете аласыз. Раковиналар иерархияда ұйымдастырылған, және кез-келген қабық жаңа қабықты жасай алады. Жаңа қабықша оны жасайтын ата-аналық қабықшаның еншілес процесі болып табылады.

Әдепкі бойынша, подождите ата-анадан тәуелді, егер ата-ана үдерісі аяқталса, субвенциялар да аяқталады. Кез келген шығыс подставкадан ата-аналық қабаққа өтеді.

Subshell қалай жасау керек

Баш сценарийі сценарийінде жақшаға арналған белгілеуді пайдаланып,

($ count -le 99) echo «$ count» sleep 1 ((count ++)) жасалды) echo «Аяқталған»

Мысалда, уақыт циклі жақшаға салынып, оны сценарий файлы орындалатын қабықшаның үстіңгі қабатында орындауға әкеп соғады.

Фондағы Subshell бағдарламасын іске қосу

Тасымалдаудың фондық режимде орындалатындығын көрсетпесеңіз, ата-ана скрипті қалған сценарийді жалғастырмас бұрын аяқтауға күтеді. Дегенмен, егер параллельді қосалқы элементтерді іске қосқыңыз келсе, оларды осында көрсетілгендей, төменгі өрнектің өрнегінен кейін амперсанд пен таңбамен орындалатын фондық режимде іске қосасыз:

«$ count» ұйқы («count ++») ұйқы («count ++») жасалды) & echo «Аяқталған» # echo «$ subs»

Параллельді бірнеше подшипниктерді іске қосу

Егер бірнеше өңдегішті фондық өңдеулер ретінде жасасаңыз, тапсырмаларды параллельде іске қосуға болады. Əдетте, операциялық жүйе əр процестер мен процестер үшін əр түрлі процессорларды немесе ядраларды пайдаланады, бұл процестер барынша кем дегенде процессорлар мен ядролардың бар екендігін болжайды. Әйтпесе, тапсырмалар сол процессорларға немесе ядраларға тағайындалады. Мұндай жағдайда, процессор немесе ядро ​​тапсырмалар аяқталғанға дейін тағайындалған тапсырмалар арасында үздіксіз ауысады. Келесі мысалда екі субпроцесс бар. Біріншісі 1-ден 99-ға дейін, екіншісі 1000-нан 1099-ға дейін.

[$ count -le 99] «$ count» ұйқысын 1 ((count ++)) жасаған) & (count = 1000 кезінде [$ count -le 1099] echo «$ count» sleep 1 ((count ++)) орындалды) & echo «Finished»

Ата-ана процесінің сценарийдің қалған бөлігімен жұмыс жасамас бұрын аяқталуын күту үшін күту туралы мәлімдемені пайдаланыңыз:

[$ count -le 99] «$ count» ұйқысын 1 ((count ++)) жасаған) & (count = 1000 кезінде [$ count -le 1099] echo «$ count» sleep 1 ((count ++)) орындалды) & wait echo «Finished»

Subshells үшін пайдаланылады

Ұяшықтардың командалары белгілі бір ортада немесе каталогта орындалуы қажет болғанда пайдалы. Әр команда әртүрлі жиынтықта орындалатын болса, ауыспалы параметрлер араласып кету қаупі жоқ. Аяқтағаннан кейін параметрлер мен ағымдағы каталогты қалпына келтіру қажет емес, себебі ата-аналық процестің ортасы оның ішкі процестерінің ешқайсысына әсер етпейді.

Ұяшықтардың функциялары әртүрлі параметрлермен бірнеше рет орындалуы үшін функция анықтамаларында қолданыла алады.