GNU/Linux >> Znalost Linux >  >> Linux

Příklad použití pojmenovaných kanálů v Linux Bash

Jeden z nejlepších příkladů praktického použití pojmenovaného potrubí...

Z http://en.wikipedia.org/wiki/Netcat:

Dalším užitečným chováním je použití netcat jako zástupce. Přesměrovat lze porty i hostitele. Podívejte se na tento příklad:

nc -l 12345 | nc www.google.com 80

Port 12345 představuje požadavek.

Tím se spustí nc server na portu 12345 a všechna připojení budou přesměrována na google.com:80 . Pokud webový prohlížeč odešle požadavek na nc , požadavek bude odeslán společnosti Google, ale odpověď nebude odeslána webovému prohlížeči. Je to proto, že potrubí je jednosměrné. To lze obejít pomocí pojmenovaného kanálu k přesměrování vstupu a výstupu.

mkfifo backpipe
nc -l 12345  0<backpipe | nc www.google.com 80 1>backpipe

Zde jsou příkazy:

$ mkfifo named_pipe

$ echo "Hi" > named_pipe &

$ cat named_pipe

První příkaz vytvoří roura.

Druhý příkaz zapisuje do roury (blokování). & zařadí to na pozadí, takže můžete pokračovat v psaní příkazů ve stejném shellu. Ukončí se, když se FIFO vyprázdní dalším příkazem.

Poslední příkaz čte z roury.


Otevřete dvě různé skořápky a nechte je vedle sebe. V obou případech přejděte na /tmp/ adresář:

cd /tmp/

V prvním zadejte:

mkfifo myPipe
echo "IPC_example_between_two_shells">myPipe

Ve druhém zadejte:

while read line; do echo "What has been passed through the pipe is ${line}"; done<myPipe

První shell vám nevrátí žádnou výzvu, dokud nespustíte druhou část kódu ve druhém shellu. Je to proto, že čtení a zápis fifo blokuje.

Můžete se také podívat na typ FIFO provedením ls -al myPipe a podívejte se na podrobnosti o tomto konkrétním typu souboru.

Dalším krokem by bylo vložit kód do skriptu!


Linux
  1. Ladění Linuxu pomocí ProcDump

  2. Jak používat Pipes a Named Pipes v Linuxu (s příklady)

  3. Použití Linux Sleep Command ve skriptech Bash

  1. Meziprocesová komunikace v Linuxu:Použití kanálů a front zpráv

  2. Analýza historie Bash v Linuxu

  3. Přesměrovat veškerý výstup do souboru pomocí Bash na Linuxu?

  1. Použití slovních modifikátorů s historií Bash v Linuxu

  2. Použití příkazu Linux Basename ve skriptech Bash

  3. Služba OS Linux „pojmenovaná“