Իմացեք, թե ինչպես պատշաճ կերպով աշխատել ենթահեղինակները, օգտագործելով բաշ սցենարները

Ինչպես կարդալ ենթահաշիվները, որոնք առաջադրվելու են զուգահեռաբար

Shell- ը Linux համակարգում հրամանների մուտք գործելու հիմնական ինտերֆեյս է: Դրանով դուք կարող եք ուղղակիորեն մուտք գործել հրաման կամ նշել ֆայլ (սցենար), որը պարունակում է հրահանգների հաջորդականությունը: Shells կազմակերպված են հիերարխիայում, եւ ցանկացած shell կարող է ստեղծել նոր shell. Նոր շերտը համարվում է երեխայի գործընթաց, որը ստեղծում է ծնողական վահանակի ենթահեղինակ:

Լռելյայն, ենթահեղինակը կախված է իր ծնողից, այն իմաստով, որ եթե ծնողական գործընթացը դադարում է, ապա ենթահողը դադարում է: Ցանկացած արտադրանք ենթահանձնաժողովից փոխանցվում է ծնողի վահանակին:

Ինչպես ստեղծել ենթահաշիվ

Բաշ քառակուսի սցենարով դուք ստեղծում եք ենթաբաժին, օգտագործելով պարամետրերի նշան:

#. / bin / bash echo "Մինչեւ subshell սկսելու համար" (count = 1 իսկ [$ count -le 99] echo "$ count" sleep 1 ((count ++)) արել) echo "ավարտված"

Օրինակում, մինչդեռ հանգույցը կցվում է պարունակությամբ, ինչը հանգեցնում է այն կատարման մեջ, որը պարունակում է սցենարի ֆայլը:

Անցում կատարելով ենթահամակարգում

Եթե ​​դուք չեք նշում, որ ենթահանձնաժողովը պետք է կատարվի ֆոնին, ծնողական սավանն ակնկալում է ենթավերնագրի ավարտը մինչեւ սցենարի մնացած մասը շարունակելու համար: Այնուամենայնիվ, եթե դուք ուզում եք վազել ենթահեճերը զուգահեռաբար, ապա դրանք անցնում եք ֆոնին, որը կատարվում է ստորեւ արտահայտության հաջորդականությամբ արտահայտված բնույթով:

#. / bin / bash echo "Մինչեւ subshell սկսելու համար" (count = 1, իսկ [$ count -le 99] echo "$ count" sleep 1 ((count ++))) եւ echo "ավարտված"

Միաժամանակ զուգահեռաբար վարելով բազմաթիվ ենթահաշիվներ

Եթե ​​դուք ստեղծել եք մի քանի ենթահաշիվներ, որպես ֆոնային գործընթացներ , կարող եք զուգահեռ աշխատանքներ իրականացնել: Սովորաբար, օպերացիոն համակարգը օգտագործում է տարբեր պրոցեսորներ կամ միջուկներ յուրաքանչյուր գործընթացի եւ ենթաֆշակման համար, ենթադրելով, որ առկա են առնվազն շատ պրոցեսորներ կամ միջուկներ, քանի որ առկա են գործընթացներ: Հակառակ դեպքում խնդիրները հանձնվում են նույն պրոցեսորներին կամ միջուկներին: Այդ դեպքում պրոցեսորը կամ միջուկը շարունակաբար անցում է կատարում հանձնարարված խնդիրների միջեւ, մինչեւ խնդիրները ավարտվեն: Հաջորդ օրինակն ունի երկու subprocesses: Առաջինը հաշվարկվում է 1-ից 99-ով, իսկ երկրորդը `1000-ից մինչեւ 1099:

#. / bin / bash echo «Նախքան subshell սկսելու համար» (count = 1, իսկ [$ count -le 99] - echo «$ count» քուն 1 ((count ++)) կատարված) & (count = 1000 while [$ count -le 1099] անել echo "$ count" sleep 1 ((count ++))) եւ echo "Ավարտված"

Օգտագործեք սպասման հայտարարությունը `ծնողական գործընթացին ենթադրելու համար, ենթադրվող գործընթացների ավարտը սպասելուց առաջ, մինչեւ սցենարի մնացած մասը անցնելը:

#. / bin / bash echo «Նախքան subshell սկսելու համար» (count = 1, իսկ [$ count -le 99] - echo «$ count» քուն 1 ((count ++)) կատարված) & (count = 1000 while [$ count -le 1099] do echo "$ count" sleep 1 ((count ++)) արեց) եւ սպասել echo "Finished"

Օգտագործում է ենթահողեր

Բաժանորդները օգտակար են, երբ հրամանները պետք է կատարվեն որոշակի միջավայրում կամ գրացուցակում: Եթե ​​յուրաքանչյուր հրամանատարք կատարվի այլ ենթախմբում, վտանգ չկա, որ փոփոխական պարամետրերը խառնվելու են: Վերջում, պարամետրերը եւ ընթացիկ գրացուցակը կարիք չունեն վերականգնել, քանի որ ծնողական գործընթացի միջավայրը չի ազդում իր subprocesses- ից:

Ենթաբաժինները կարող են օգտագործվել ֆունկցիայի սահմաններում, որպեսզի դրանք կարողանան կատարել տարբեր պարամետրերով բազմակի անգամ: