Як Даручыць Подоболочки працаваць паралельна ў фонавым рэжыме
Абалонка з'яўляецца асноўным інтэрфейсам для ўводу каманд у сістэме 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 ((кол ++)) зрабілі) і чакаць рэха «Скончана»Выкарыстанне для Подоболочки
Подоболочки карысныя, калі каманды павінны быць выкананы ў пэўнай асяроддзі або каталогу. Калі кожная каманда ажыццяўляецца ў другой субоболочке, няма ніякага рызыкі, што зменныя параметры будуць пераблытаны. Па завяршэнні налады і бягучы каталог не павінны быць адноўлены, так як сераду бацькоўскага працэсу не залежыць ад якой-небудзь з яго подпроцессов.
Подоболочки могуць быць выкарыстаны ў вызначэннях функцый , так што яны могуць быць выкананы некалькі разоў з рознымі параметрамі.