Даведайцеся, як правільна запусціць Подоболочки Выкарыстанне Bash скрыпты

Як Даручыць Подоболочки працаваць паралельна ў фонавым рэжыме

Абалонка з'яўляецца асноўным інтэрфейсам для ўводу каманд у сістэме Linux. З яго дапамогай вы можаце ўвесці каманду непасрэдна або паказаць файл (скрыпт), які змяшчае паслядоўнасць каманд для выканання. Корпуса арганізаваны ў іерархіі, і любая абалонка можа стварыць новую абалонку. Новая абалонка лічыцца дзіцем на працэс Подоболочки-бацька абалонкі, што стварае яго.

Па змаўчанні подоболочка залежыць ад яго аднаго з бацькоў у тым сэнсе, што калі бацькоўскі працэс завяршаецца, подоболочка таксама завяршаецца. Любы выхад перадаецца з подоболочки да бацькоўскай абалонцы.

Як стварыць Подоболочку

У сцэнары абалонкі Bash, вы ствараеце подоболочку выкарыстоўваючы дужкі абазначэння:

#! / Bin / Баш рэха "Перад пачаткам подоболочку" (колькасць = 1, а [$ падлічваць -le 99] рабіць рэха "$ кол" спаць 1 ((палічыце ++)) зроблена) рэха "Закончанае"

У прыкладзе, цыкл у той час заключаны ў круглых дужках, што прыводзіць да яго быць выкананы ў подоболочках абалонкі , у якой файл сцэнар выконваюцца.

Запуск Подоболочка ў фонавым рэжыме

Калі не пазначана, што подоболочка павінны быць выканана ў фонавым рэжыме, бацькоўская абалонка чакае подоболочки скончыць, перш чым працягнуць з астатняй часткай сцэнара. Тым не менш, калі вы хочаце запусціць подоболочки паралельна, запусціць іх у фонавым рэжыме, што дасягаецца з Ампэрсанд наступнага выказвання подоболочек, як паказана тут:

#! / Bin / Баш рэха "Перад пачаткам подоболочку" (колькасць = 1, а [$ падлічваць -le 99] рабіць рэха "$ кол" спаць 1 ((палічыце ++)) зроблена) і рэха "Закончанае"

Запуск некалькіх Подоболочки ў Parallel

Калі вы ствараеце некалькі подоболочек як фонавыя працэсы , вы можаце выконваць задачы паралельна. Як правіла, аперацыйная сістэма выкарыстоўвае розныя працэсары або ядра для кожнага працэсу і подпроцесса, мяркуючы, што існуе, па меншай меры, столькі працэсараў або ядраў, паколькі ёсць працэсы. У адваротным выпадку, задачы прызначаюцца тымі ж працэсарамі або ядрамі. У гэтым выпадку працэсар або ядро ​​пастаянна перамыкаецца паміж пастаўленымі задачамі, пакуль задачы не будуць выкананыя. Наступны прыклад мае два подпроцесса. Першы з іх мае значэнне ад 1 да 99, а другі ад 1000 да 1099.

#! / Bin / Баш рэха "Перад пачаткам подоболочку" (колькасць = 1, а [$ падлічваць -le 99] рабіць рэха "$ кол" спаць 1 ((палічыце ++)) зроблена) і (колькасць = 1000, а [$ Колькасць -le 1099] рабіць рэха "$ кол" спаць 1 ((кол ++)) зроблена) і рэха "Закончанае"

Выкарыстоўвайце чакання заяву сказаць бацькоўскі працэс чакаць субпроцессы скончыць , перш чым прыступіць да астатняй часткі скрыпту:

#! / Bin / Баш рэха "Перад пачаткам подоболочку" (колькасць = 1, а [$ падлічваць -le 99] рабіць рэха "$ кол" спаць 1 ((палічыце ++)) зроблена) і (колькасць = 1000, а [$ Колькасць -le 1099] рабіць рэха «$ кол» спаць 1 ((кол ++)) зрабілі) і чакаць рэха «Скончана»

Выкарыстанне для Подоболочки

Подоболочки карысныя, калі каманды павінны быць выкананы ў пэўнай асяроддзі або каталогу. Калі кожная каманда ажыццяўляецца ў другой субоболочке, няма ніякага рызыкі, што зменныя параметры будуць пераблытаны. Па завяршэнні налады і бягучы каталог не павінны быць адноўлены, так як сераду бацькоўскага працэсу не залежыць ад якой-небудзь з яго подпроцессов.

Подоболочки могуць быць выкарыстаны ў вызначэннях функцый , так што яны могуць быць выкананы некалькі разоў з рознымі параметрамі.