Linux mkfifo Command Tutorial für Anfänger (mit Beispielen)
Wenn Sie selbst ein moderater Linux-Kommandozeilenbenutzer sind, müssen Sie sich über Pipes im Klaren sein, eine grundlegende Befehlszeilenfunktion, die es Prozessen ermöglicht, zu kommunizieren. Dann gibt es ein Konzept von benannten Pipes (ja, Pipes mit Namen, so dass Sie mehr mit Pipes machen können). Mit dem Befehl mkfifo können Sie solche benannten Pipes erstellen.
In diesem Tutorial werden wir die Grundlagen von mkfifo anhand einiger leicht verständlicher Beispiele diskutieren. Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele hier auf Ubuntu 16.04 LTS getestet wurden.
Linux mkfifo Befehl
Mit dem Befehl mkfifo können Sie grundsätzlich FIFOs (auch bekannt als named pipes) erstellen. Es folgt die Syntax des Befehls:
mkfifo [OPTION]... NAME...
Und so erklärt es die Man Page des Tools:
Create named pipes (FIFOs) with the given NAMEs.
Nachfolgend finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine gute Vorstellung davon vermitteln sollen, wie mkfifo funktioniert.
Q1. Was genau sind Rohre?
Um dies zu verstehen, sollten Sie sich zunächst mit dem Konzept der Basisrohre vertraut machen. Du hättest Befehle gesehen, die einen vertikalen Balken (|) enthalten. Diese Stange wird als Rohr bezeichnet. Was es tut, ist, dass es einen Kommunikationskanal zwischen den beiden Prozessen schafft (wenn der komplette Befehl ausgeführt wird).
Zum Beispiel:
ls | grep .txt
Der oben genannte Befehl besteht aus zwei Programmen: ls und grep. Beide Programme sind durch eine Pipe (|) getrennt. Was die Pipe hier also tut, ist, dass sie einen Kommunikationskanal zwischen diesen Programmen schafft – wenn der oben genannte Befehl ausgeführt wird, wird die Ausgabe von ls als Input an grep übergeben. Die Ausgabe, die auf dem Terminal angezeigt wird, besteht also nur aus den Einträgen, in denen die Zeichenkette ‚.txt‘ enthalten ist.
Das war also eine schnelle Auffrischung der normalen Rohre. Jetzt kommt das Konzept der benannten Rohre. Wie der Name schon sagt, handelt es sich hierbei um Pipes mit Namen. Sie können eine benannte Pipe mit dem Befehl mkfifo erstellen. Zum Beispiel:
mkfifo pipe2
So ist’pipe2′ nun eine benannte Pipe. Jetzt kommt die Frage, wie benannte Rohre nützlicher sind? Nun, betrachten Sie den Fall, dass Sie einen Prozess haben, der in einem Terminal läuft und Ausgabe produziert, und was Sie wollen, ist, dass Sie diese Ausgabe an ein anderes Terminal weiterleiten. Hier könnte also eine benannte Rohrleitung eine große Hilfe sein.
Angenommen, ls ist der Prozess, der im ersten Terminal läuft, und Sie möchten seine Ausgabe in einem anderen Terminal sehen…. Also, hier ist, was du tun kannst:
ls > pipe2
und hier ist, was du im zweiten Terminal tun kannst:
cat < pipe2
Q2. Wie kann man benannte Rohre identifizieren?
Auf benannte Pipes kann normal wie auf Dateien zugegriffen werden. Das bedeutet, dass du mit dem Befehl ls auf sie zugreifen kannst. Wenn Sie die Zugriffsrechte für eine benannte Pipe sehen, sehen Sie am Anfang ein ‚p‘. Dies bedeutet, dass es sich bei der betreffenden Datei um eine Named Pipe handelt. Hier ist ein Beispiel:
Q3. Wie kann man benutzerdefinierte Zugriffsberechtigungen festlegen?
Wie Sie in den vorangegangenen Fragen und Antworten sehen können, sind die Standardberechtigungen für benannte Pipes ‚rw‘, ‚rw‘, ‚rw‘ und ‚r‘ (für Benutzer, Gruppe und andere). Wenn Sie möchten, können Sie jedoch auch benutzerdefinierte Berechtigungen festlegen, was Sie mit der Option -m tun können.
Zum Beispiel:
mkfifo pipe3 -m700
Der folgende Screenshot bestätigt, dass benutzerdefinierte Berechtigungen festgelegt wurden:
Um mehr über mkfifo zu erfahren, kannst du die Optionen –help und –version verwenden.
Fazit
Je nachdem, welche Art von Arbeit du auf der Linux-Befehlszeile verrichtest, kann sich der Befehl mkfifo als sehr nützlich für dich erweisen. Sobald Sie mit der grundlegenden Verwendung, die wir hier besprochen haben, fertig sind, können Sie mehr über das Tool erfahren, indem Sie zu seiner Manpage gehen.