Nimetty putki

Linux.fista
(Ohjattu sivulta Mkfifo)
Siirry navigaatioon Siirry hakuun

Nimetty putki eli FIFO ("First In, First Out") on tiedostojärjestelmään luotu pysyvä erikoistiedosto, jota käytetään eri prosessien väliseen kommunikointiin. Nimettyyn putkeen voivat eri aikoihin tai samanaikaisesti lukea ja kirjoittaa eri prosessit, kun taas tavalliseen nimeämättömään, tilapäiseen putkeen (esim. cat tiedosto | less) ei voi syöttää ja tulostaa kuin kaksi samanaikaisesti toimivaa prosessia.

Käyttö[muokkaa]

Nimetty putki luodaan komennolla mkfifo, esimerkiksi

mkfifo putki1

Annetaan yhdessä virtuaalikonsolissa komento

ls -l >putki1

jolla syötetään tiedostolistaus nimettyyn putkeen putki1. Koska mikään prosessi ei vielä lue ls:n putkeen syöttämää dataa, pysähtyy ls:n suoritus automaattisesti odottamaan vastaanottavaa prosessia. Annetaan seuraavaksi toisessa virtuaalikonsolissa komento

cat putki1

joka tulostaa putkesta saamansa datan näytölle. Kun cat on tulostanut putken kautta ls:ltä saamansa syötteen, loppuu molempien prosessien suoritus automaattisesti (EOF).

Annetaan komento

bzip2 -c < putki1 > tavara.bz2 &

joka laittaa bzip2:n taustalle "vahtimaan" putki1:stä ja pakkaamaan sieltä tulevan datan tiedostoon tavara.bz2.

Kun tämän jälkeen taas ohjataan ls:n tuloste putkeen komennolla

ls -l >putki1

pakkaa bzip2-prosessi tämän datan ja lopettaa itsensä. Pakatun tiedoston sisällön voi tarkistaa vaikkapa komennolla

bzcat tiedosto.bz2

Nimetyn putken voi poistaa normaaliin tapaan komennolla

rm putki1

Katso myös[muokkaa]

Aiheesta muualla[muokkaa]