Pokud jste i jen mírným uživatelem příkazového řádku Linuxu, musíte si být vědomi kanálů, základní funkce příkazového řádku, která umožňuje procesům komunikovat. Pak je tu koncept pojmenovaných rour (jo, roury se jmény, abyste s rourami mohli dělat víc). mkfifo vám umožňuje vytvořit takové pojmenované kanály.
V tomto tutoriálu probereme základy mkfifo pomocí několika snadno srozumitelných příkladů. Ale než to uděláme, stojí za zmínku, že všechny příklady zde byly testovány na Ubuntu 16.04 LTS.
Příkaz Linux mkfifo
Příkaz mkfifo vám v podstatě umožňuje vytvářet FIFO (neboli pojmenované kanály). Následuje syntaxe příkazu:
mkfifo [OPTION]... NAME...
A zde je návod, jak to vysvětluje manuálová stránka nástroje:
Create named pipes (FIFOs) with the given NAMEs.
Následuje několik příkladů ve stylu otázek a odpovědí, které by vám měly poskytnout dobrou představu o tom, jak mkfifo funguje.
O1. Co přesně jsou pojmenované roury?
Abyste tomu porozuměli, měli byste si nejprve uvědomit koncept základních trubek. Viděli jste příkazy, které obsahují svislou čáru (|). Tato tyč se nazývá dýmka. To, co dělá, je, že vytváří komunikační kanál mezi dvěma procesy (když je proveden celý příkaz).
Například:
ls | grep .txt
Výše zmíněný příkaz se skládá ze dvou programů: ls a grep. Oba tyto programy jsou odděleny svislou čarou (|). Pipe zde tedy dělá to, že vytváří komunikační kanál mezi těmito programy – po provedení výše uvedeného příkazu je výstup ls přiveden jako vstup do grep. Takže výstup, který se zobrazí na terminálu, sestává pouze z těch položek, které obsahují řetězec '.txt'.
Takže to bylo rychlé osvěžení normálních dýmek. Nyní přichází koncept pojmenovaných potrubí. Jak už sám název napovídá, jedná se o dýmky s názvy. Pojmenovaný kanál můžete vytvořit pomocí příkazu mkfifo. Například:
mkfifo pipe2
Takže 'pipe2' je nyní pojmenovaná roura. Nyní přichází otázka, jak jsou pojmenované roury užitečnější? Zvažte případ, kdy máte proces spuštěný v terminálu a vytváří výstup, a co chcete, je usměrnit tento výstup na jiný terminál. Zde by tedy pojmenovaná roura mohla velmi pomoci.
Předpokládejme například, že ls je proces běžící v prvním terminálu a chcete vidět jeho výstup v jiném terminálu. Takže můžete udělat toto:
ls > pipe2
a zde je to, co můžete udělat ve druhém terminálu:
cat < pipe2
Q2. Jak identifikovat pojmenované kanály?
K pojmenovaným kanálům lze přistupovat normálně jako k souborům. To znamená, že k nim můžete použít příkaz ls. Pokud vidíte přístupová oprávnění pro pojmenovaný kanál, uvidíte na začátku 'p'. To znamená, že dotyčný soubor je pojmenovaný kanál. Zde je příklad:
3. čtvrtletí. Jak nastavit vlastní přístupová oprávnění?
Jak můžete vidět v předchozích otázkách a odpovědích, výchozí přístupová oprávnění pro pojmenované kanály jsou „rw“, „rw“ a „r“ (pro uživatele, skupinu a další). Pokud však chcete, můžete také nastavit vlastní oprávnění, což můžete provést pomocí volby -m.
Například:
mkfifo pipe3 -m700
Následující snímek obrazovky potvrzuje, že byla nastavena vlastní oprávnění:
Chcete-li se dozvědět více o mkfifo, můžete použít --help a --version možnosti.
Závěr
Takže v závislosti na tom, jakou práci děláte na příkazovém řádku Linuxu, může se vám příkaz mkfifo ukázat jako velmi užitečný. Jakmile skončíte se základním použitím, o kterém jsme zde diskutovali, můžete se o tomto nástroji dozvědět více na jeho manuálové stránce.