中程度のLinuxコマンドラインユーザーでさえも、プロセスが通信できるようにする基本的なコマンドライン機能であるパイプに注意する必要があります。次に、名前付きパイプの概念があります(ええ、名前付きのパイプなので、パイプでより多くのことができます)。 mkfifo コマンドを使用すると、そのような名前付きパイプを作成できます。
このチュートリアルでは、わかりやすい例を使用してmkfifoの基本について説明します。ただし、その前に、ここでのすべての例がUbuntu16.04LTSでテストされていることを言及する価値があります。
Linuxmkfifoコマンド
mkfifoコマンドを使用すると、基本的にFIFO(名前付きパイプ)を作成できます。コマンドの構文は次のとおりです。
mkfifo [OPTION]... NAME...
そして、ツールのマニュアルページで説明されているのは次のとおりです。
Create named pipes (FIFOs) with the given NAMEs.
以下は、mkfifoがどのように機能するかについての良いアイデアを与えるはずのQ&Aスタイルの例です。
Q1。名前付きパイプとは正確には何ですか?
これを理解するには、最初に基本的なパイプの概念を知っておく必要があります。垂直バー(|)を含むコマンドを見たことがあるでしょう。このバーはパイプと呼ばれます。それが行うことは、2つのプロセス間の通信チャネルを作成することです(完全なコマンドが実行されるとき)。
例:
ls | grep .txt
上記のコマンドは、lsとgrepの2つのプログラムで構成されています。これらのプログラムは両方ともパイプ(|)で区切られています。したがって、ここでパイプが行うことは、これらのプログラム間の通信チャネルを作成することです。前述のコマンドが実行されると、lsの出力がgrepへの入力として供給されます。したがって、最後に、端末に表示される出力は、「。txt」文字列を含むエントリのみで構成されます。
これは、通常のパイプの簡単な復習でした。ここで、名前付きパイプの概念が登場します。名前自体が示すように、これらは名前の付いたパイプです。 mkfifoコマンドを使用して、名前付きパイプを作成できます。例:
mkfifo pipe2
したがって、「pipe2」は名前付きパイプになります。ここで、名前付きパイプがどのように役立つのかという疑問が生じます。さて、ターミナルで実行されて出力を生成するプロセスがあり、必要なのはその出力を別のターミナルにチャネル化することである場合を考えてみてください。したがって、ここでは、名前付きパイプが非常に役立つ可能性があります。
たとえば、lsが最初の端末で実行されているプロセスであり、その出力を別の端末で確認したいとします。そこでできることは次のとおりです。
ls > pipe2
2番目のターミナルでできることは次のとおりです。
cat < pipe2
Q2。名前付きパイプを識別する方法は?
名前付きパイプは、通常、ファイルのようにアクセスできます。つまり、lsコマンドを使用してそれらにアクセスできるということです。名前付きパイプのアクセス許可が表示されている場合は、最初に「p」が表示されます。これは、問題のファイルが名前付きパイプであることを意味します。次に例を示します:
Q3。カスタムアクセス許可を設定するにはどうすればよいですか?
前のQ&Aでわかるように、名前付きパイプのデフォルトのアクセス許可は、「rw」、「rw」、および「r」です(それぞれ、ユーザー、グループ、その他の場合)。ただし、必要に応じて、カスタム権限を設定することもできます。これは、-mオプションを使用して行うことができます。
例:
mkfifo pipe3 -m700
次のスクリーンショットは、カスタム権限が設定されたことを確認しています。
mkfifoの詳細については、-helpを使用できます。 および-バージョン オプション。
したがって、Linuxコマンドラインで実行する作業の種類によっては、mkfifoコマンドが非常に役立つ場合があります。ここで説明した基本的な使用法を終えたら、マニュアルページにアクセスしてツールの詳細を学ぶことができます。