www.wikidata.uk-ua.nina.az
V Unix podibnih operacijnih sistemah konveyer ce mehanizm mizhprocesnoyi vzayemodiyi sho vikoristovuye peredachu povidomlen Ye naborom poyednanih mizh soboyu procesiv yaki zabezpechuyut peredachu danih tak sho standartnij vihidnij potik kozhnogo procesu stdout bezposeredno z yednuyetsya zi standartnim vhidnim potokom stdin nastupnogo Nastupnij proces pochinayetsya poki pershij she vikonuyetsya i voni vikonuyutsya odnochasno Koncepciyu bulo zaproponovano Duglasom Makilroyem v Bell Labs kolisci Unix v procesi jogo rozrobki ta formuvannya filosofiyi instrumentizaciyi 1 2 Nazvu dano za analogiyeyu zi spravzhnimi konveyerami Klyuchovoyu funkciyeyu cih konveyeriv ye prihovuvannya nutroshiv Ritchie amp Thompson 1974 Ce zabezpechuye sistemi chistotu za prostotu Konveyer z troh programnih procesiv vikonuvana z tekstovogo terminaluU cij statti jdetsya pro neimenovani kanali de dani poverneni odnim procesom buferizuyutsya sistemoyu poki ne budut zchitani nastupnim procesom i cej odnospryamovanij kanal znikaye z zakinchennyam procesiv Ce vidriznyayetsya vid imenovanih kanaliv de povidomlennya peredayutsya mizh procesami fajlami yaki zalishayutsya po zakinchenni procesiv Standartnij shell sintaksis dlya neimenovanih kanaliv ce spisok dekilkoh komand rozdilenih vertikalnimi riskami pajpi v rozmovnij leksici koristuvachiv Unix command1 command2 command3 Napriklad shob otrimati spisok fajliv v potochnij direktoriyi zberegti lishe strichku ls vivodu sho maye ryadokg key grep i pokazati rezultat na storinci sho progortuyetsya less koristuvach mozhe napisati v komandnij ryadok terminalu nastupne ls l grep key less Komandals l vikonuyetsya yak proces vivid stdout yakogo peredayetsya vvodu stdin procesu komandi grep key tak samo z komandoyu less Kozhen proces prijmaye vvid vid poperednogo i peredaye svij vivid nastupnomu standartnimi potokami Kozhen vkazuye komandnij obolonci pid yednati standartnij vivid komandi zliva do standartnogo vvodu komandi sprava cherez mehanizm vzayemodiyi mizh procesami sho nazivayut neimenovanim kanalom vbudovanim v operacijnu sistemu Kanali ye odnostoronnimi dani perehodyat kanalom lishe zliva napravo Zmist 1 Prikladi 2 Konveyeri v interfejsah komandnogo ryadka 2 1 Potik vivodu pomilok 2 2 Kanalni rozdribnyuvachi 3 Programne stvorennya konveyeriv 4 Vikonannya 5 Istoriya 6 Dif takozh 7 PosilannyaPrikladi RedaguvatiNizhche navedenij priklad konveyera sho realizovuye perevirku orfografiyi dlya veb storinki na yaku vkazuye posilannya curl https en wikipedia org wiki Pipeline Unix sed s a zA Z g tr A Z a z n grep a z sort u comm 23 lt sort usr share dict words less a href CURL html title CURL curl a otrimuye html vmist vebstorinki dlya deyakih sistem vikoristovuyut wget a href Sed html title Sed sed a zaminyuye vsi simvoli z vmistu vebstorinki sho ne ye probilami chi literami na probili zi zberezhennyam perehodu na novij ryadok a href Tr html title Tr tr a zminyuye vsi veliki literi na mali i konvertuye probili u perehodi na novij ryadok kozhne slovo teper v okremomu ryadku a href Grep html title Grep grep a prijmaye lishe ti ryadki yaki mistyat shonajmenshe odnu malu literu alfavitu takim chinom viklyuchayuchi pusti ryadki sort sup class noprint span title Sort Unix versiya statti Sort Unix anglijskoyu movoyu style font style normal font weight normal font size normal en span sup sortuye spisok sliv v alfavitnomu poryadku a u vidalyaye dublikati a href Comm html title Comm comm a shukaye strichki sho ye odnakovimi v obidvoh fajlah 23viklyuchaye vivid strichok sho ye unikalnimi v drugomu fajli ta odnakovimi v oboh fajlah vivodyachi lishe strichki unikalni dlya pershogo fajlu na misci nazvi fajlu vkazuye procesu comm vikoristovuvati standartnij potik vvodu v danomu vipadku z konveyera sort usr share dict words sortuye vmist fajlu words za alfavitom za vimogami procesu comm lt vivodit rezultat vikonannya v timchasovij fajl vikoristovuyuchi procesne zamishennya yakij zchituye comm Rezultatom ye spisok sliv strichok ne znajdenih v usr share dict words a href Less html title Less less a dozvolyaye koristuvachevi rozdiliti rezultat na storinki i progortuvati yih Konveyeri v interfejsah komandnogo ryadka RedaguvatiVsi shiroko vikoristovuvani obolonki Unix mayut vlasnij sintaksis dlya stvorennya konveyeriv Zagalom komandi pishut poslidovno rozdilyuyuchi yih vertikalnoyu riskoyu ASCII yaku z ciyeyi zh prichini chasto nazivayut pajpom Komandna obolonka rozpochinaye procesi i organizovuye neobhidni zv yazki mizh yihnimi standartnimi potokami vikoristovuyuchi deyakij obsyag buferu Potik vivodu pomilok Redaguvati Za zamovchuvannyam standartni potoki vivodu pomilok stderr procesiv v konveyeri ne peredayutsya dali natomist z yednuyutsya i napravlyayutsya v konsol Odnak bagato obolonok mayut dodatkovij sintaksis dlya zmini cih nalashtuvan Napriklad vikoristannya amp zamist v obolonci csh oznachaye sho standartnij potik vivodu pomilok tezh treba zliti zi standartnim vivodom i peredati nastupnomu procesu Kanalni rozdribnyuvachi Redaguvati U najprostishih ta najposhirenishih konveyerah obolonka z yednuye seriyu pidprocesiv kanalami i vikonuye zovnishni komandi bezposeredno v pidprocesi Takim chinom sama obolonka ne vikonuye pryamoyi obrobki danih sho peredayutsya kanalom Odnak obolonka mozhe napryamu obroblyati dani vikoristovuyuchi tak zvani kanalni rozdribnyuvachi oskilki komanda while rozdibnyuye rezultati z pochatkovoyi komandi i prohoditsya po kozhnomu z nih Zagalnij viglyad takogo konstruktu viglyadaye nastupnim chinom command while read r var1 var2 do process each line using variables as parsed into var1 var2 etc note that this may be a subshell var1 var2 etc will not be available after the while loop terminates some shells such as zsh and newer versions of Korn shell process the commands to the left of the pipe operator in a subshell done Taki konstrukti mozhut vikonuvatis nekorektno yaksho tilo ciklu mistit taki komandi yak cat i ssh yaki potrebuyut zchituvannya z a href Stdin html class mw redirect title Stdin stdin a 3 pri pershij jogo iteraciyi Taka programa nazvimo yiyi stokom zchituvatime zalishkovij vivid z command i cikl bude pripineno jogo rezultat zalezhatime vid specifiki stoku Ye dekilka shlyahiv uniknennya takogo scenariyu Po pershe deyaki stoki pidtrimuyut mozhlivist vimknennya chitannya z stdin napr ssh n Yak alternativa yaksho stik ne potrebuye vhidnih danih z stdin shob zrobiti shos korisne vhidnimi danimi mozhe buti lt dev null Oskilki vsi skladovi kanalu vikonuyutsya paralelno obolonka tipovo rozdilyaye pidproces pidobolonku shob obrobiti jogo vmist sho unemozhlivlyuye poshirennya zmini zminnoyi v zovnishnyu obolonku Shob vipraviti cyu problemu danij konstrukt mozhe prijnyati znachennya z here dokumentu sho mistit komandne zamishennya yake ochikuye zavershennya konveyeru persh nizh prohoditis po danih V alternativu comu dlya rozparalelennya mozhna vikoristovuvati imenovani kanali abo zamishennya procesiv GNU bash takozh maye variant lastpipe dlya vimknennya rozdilennya ostannogo komponentu kanalu 4 Programne stvorennya konveyeriv RedaguvatiKonveyeri mozhut buti stvoreni programno Sistemnij viklik v Unix pipe prosit operacijnu sistemu pobuduvati novij ob yekt neimenovanogo kanalu Rezultatom ye vidkriti dva novi fajlovi deskriptori procesu odin lishe dlya chitannya drugij lishe dlya zapisu Voni shozhi zi zvichajnimi neimenovanimi fajlovimi deskriptorami ale v nih nemaye mozhlivosti poshuku Shob uniknuti vzayemnogo blokuvannya ta vikoristati rozparalelennya Unix proces z odnim abo bilshe novim kanalom viklikaye a href Fork D1 81 D0 B8 D1 81 D1 82 D0 B5 D0 BC D0 BD D0 B8 D0 B9 D0 B2 D0 B8 D0 BA D0 BB D0 B8 D0 BA html title Fork sistemnij viklik fork a shob stvoriti novi procesi Imenovani kanali tezh mozhna stvoriti komandoyu mkfifo abo mknod sup class noprint span title mknod versiya statti mknod anglijskoyu movoyu style font style normal font weight normal font size normal en span sup Vikonannya RedaguvatiV bilshosti Unix podibnih sistemah vsi procesi konveyera pochinayutsya odnochasno Yihni potoki povinni buti vidpovidno pravilno pid yednani i organizovani planuvalnikom razom z inshimi procesami sho vikonuyutsya mashinoyu Vazhlivim aspektom cogo ye nastupne viddilyati Unix kanali vid inshih kanaliv sho vikonuyutsya ye konceptom buferingu Napriklad programa vidpravnik mozhe generuvati 5000 bajtiv na sekundu a programa otrimuvach mozhe otrimuvati lishe 100 bajtiv na sekundu ale pri comu dani ne vtrachayutsya a zberigayutsya v buferi Koli otrimuvach gotovij prijmati dani nastupnij proces konveyeru zchituye yih z buferu Yaksho vin zapovnenij programa vidpravnik blokuyetsya poki pevnij ob yem danih ne peremistitsya z buferu do otrimuvacha V Linuksi rozmir buferu skladaye 65546 bajtiv 64KB U vidkritih dzherelah mozhna znajti storonnij filtr bfr dlya zabezpechennya buferu bilshogo ob yemu pri potrebi Istoriya RedaguvatiDuglas Makilroj 5 vinajshov koncept konveyeru i vpershe opisav jogo v posibniku dlya Version 3 Unix 6 Makilroj pomitiv sho duzhe chasto komandni obolonki peredavali vihidni dani odniyeyi programi na vhid inshij Jogo ideyi buli vtileni v 1973 roci koli Ken Tompson dodav sistemnij viklik pipe i kanali do obolonki i dekilkoh utilit Version 3 Unix Poznachennya takozh zasluga Tompsona ce znachno polegshilo opis sintaksisu u Version 4 7 6 Dif takozh RedaguvatiNeimenovanij kanal Imenovanij kanal Procesne zamishennya TeePosilannya Redaguvati Mahoney Michael S The Unix Oral History Project Release 0 The Beginning Arhiv originalu za 21 kvitnya 2021 Procitovano 14 sichnya 2022 McIlroy It was one of the only places where I very nearly exerted managerial control over Unix was pushing for those things yes Arhivovana kopiya Arhiv originalu za 3 lyutogo 2015 Procitovano 14 sichnya 2022 Shell Loop Interaction with SSH 6 bereznya 2012 Arhiv originalu za 6 bereznya 2012 John1024 How can I store the find command results as an array in Bash Stack Overflow The Creation of the UNIX Operating System Bell Labs Arhiv originalu za 14 veresnya 2004 a b McIlroy M D 1987 A Research Unix reader annotated excerpts from the Programmer s Manual 1971 1986 CSTR 139 Arhiv originalu za 11 listopada 2017 Procitovano 14 sichnya 2022 Proignorovano nevidomij parametr institution dovidka http www linfo org pipe html Arhivovano 26 chervnya 2020 u Wayback Machine Pipes A Brief Introduction by The Linux Information Project LINFO Otrimano z https uk wikipedia org w index php title Konveyeri Unix amp oldid 40379534