Se sei anche un utente moderato della riga di comando di Linux, devi essere a conoscenza delle pipe, una funzionalità fondamentale della riga di comando che consente ai processi di comunicare. Poi c'è un concetto di pipe con nome (sì, pipe con nomi, così puoi fare di più con le pipe). Il mkfifo comando ti consente di creare tali pipe con nome.
In questo tutorial, discuteremo le basi di mkfifo usando alcuni esempi di facile comprensione. Ma prima di farlo, vale la pena ricordare che tutti gli esempi qui sono stati testati su Ubuntu 16.04 LTS.
Comando Linux mkfifo
Il comando mkfifo fondamentalmente ti consente di creare FIFO (aka named pipe). Di seguito è riportata la sintassi del comando:
mkfifo [OPTION]... NAME...
Ed ecco come lo spiega la pagina man dello strumento:
Create named pipes (FIFOs) with the given NAMEs.
Di seguito sono riportati alcuni esempi in stile domande e risposte che dovrebbero darti una buona idea su come funziona mkfifo.
Q1. Cosa sono esattamente le pipe con nome?
Per capirlo, dovresti prima essere consapevole del concetto di tubi di base. Avresti visto comandi che contengono una barra verticale (|). Questa barra è chiamata pipe. Quello che fa è creare un canale di comunicazione tra i due processi (quando viene eseguito il comando completo).
Ad esempio:
ls | grep .txt
Il comando sopra menzionato è costituito da due programmi: ls e grep. Entrambi questi programmi sono separati da una pipe (|). Quindi ciò che pipe fa qui è creare un canale di comunicazione tra questi programmi:quando viene eseguito il comando sopra menzionato, l'output di ls viene inviato come input a grep. Quindi, alla fine, l'output che viene visualizzato sul terminale consiste solo di quelle voci che contengono la stringa '.txt'.
Quindi è stato un rapido aggiornamento delle pipe normali. Ora arriva il concetto di pipe con nome. Come suggerisce il nome stesso, si tratta di pipe con nomi. Puoi creare una named pipe usando il comando mkfifo. Ad esempio:
mkfifo pipe2
Quindi "pipe2" è ora una pipe denominata. Ora arriva la domanda:come le pipe con nome sono più utili? Bene, considera il caso in cui hai un processo in esecuzione in un terminale e produce output, e quello che vuoi è canalizzare quell'output su un terminale diverso. Quindi qui, una named pipe potrebbe essere di grande aiuto.
Ad esempio, supponiamo che ls sia il processo in esecuzione nel primo terminale e desideri vederne l'output in un terminale diverso. Quindi ecco cosa puoi fare:
ls > pipe2
ed ecco cosa puoi fare nel secondo terminale:
cat < pipe2
Q2. Come identificare le pipe con nome?
È possibile accedere normalmente alle pipe con nome come i file. Ciò significa che puoi usare il comando ls per accedervi. Se vedi le autorizzazioni di accesso per una named pipe, vedrai una "p" all'inizio. Ciò significa che il file in questione è una named pipe. Ecco un esempio:
T3. Come impostare autorizzazioni di accesso personalizzate?
Come puoi vedere nelle precedenti domande e risposte, le autorizzazioni di accesso predefinite per le named pipe sono "rw", "rw" e "r" (rispettivamente per utente, gruppo e altri). Tuttavia, se lo desideri, puoi anche impostare autorizzazioni personalizzate, cosa che puoi fare utilizzando l'opzione -m.
Ad esempio:
mkfifo pipe3 -m700
Lo screenshot seguente conferma che sono state impostate autorizzazioni personalizzate:
Per saperne di più su mkfifo, puoi utilizzare il --help e --versione opzioni.
Conclusione
Quindi, a seconda del tipo di lavoro che fai sulla riga di comando di Linux, il comando mkfifo può rivelarsi molto utile per te. Una volta che hai finito con l'utilizzo di base di cui abbiamo discusso qui, puoi saperne di più sullo strumento andando alla sua pagina man.