あるSSHセッションから別のSSHセッションに入力を送信するには?先入れ先出しを使用しますか?

あるSSHセッションから別のSSHセッションに入力を送信するには?先入れ先出しを使用しますか?

しばらく前に、fifo?を使用してあるコンソールウィンドウから別のコンソールウィンドウにメッセージを送信する方法についての記事を見ました。

以前使用したことがないため、私の記事へのリンクが見つかりませんでした。どのように設定しますか?

ロギングのために2つのコンソールを開き、あるコンソールに別のコンソールから送信されたログメッセージをリアルタイムで表示させたいと思います。

ベストアンサー1

mkfifo(または実行できる他の操作)を介して名前付きパイプを作成すると、削除されるまで(または忘れた場合はコンピュータが再起動されるまで)そのまま残るパイプ「ファイル」が生成されます。それ)。次のようなパラメータがほとんど必要ないため、mkfifoを使用して独自の名前付きパイプを作成できます。

host # mkfifo -m 777 /tmp/corncob

これは、/tmp/corncobという名前のパイプを生成するために必要なすべてです。権限を設定するための-mフラグは必要ありません。通常、これを含めないと、新しい名前付きパイプのデフォルト権限セットがシステムのデフォルト権限セットになります。あるいは、-mフラグを渡して8進数の代わりにアルファ権限を設定することもできます。たとえば、次のようになります。

host # mkfifo -m a=rwx /tmp/corncob

同じことをしてください。ファイルを削除するかのように、名前付きパイプを削除できます。 rm して消えました。

名前付きパイプに注目すべき1つのことは、通常(私が知っている限り)一度に正確に1つの入力/出力ストリームのみを渡すことです。つまり、あるプロセスが名前付きパイプに入力を送信し、両方のプロセスが名前付きパイプからデータを読み取ると、読み取りプロセスの1つだけが出力を受け取ります。さらに、この状況が発生すると、出力を受信する元のプロセスが終了すると、他のプロセスは名前付きパイプから出力を受信し始めます(まだパイプから読み取ろうとした場合)。文章が長いのでしょうか、それとも私が早すぎるのでしょうか? ;)

私が意味するものの例は次のとおりです。

host-term1 # while :;do echo a b c d e >/tmp/corncob;sleep 15;done

host-term2 # tail -f /tmp/corncob
a b c d e
a b c d e
a b c d e
a b c d e
a b c d e
a b c d e
a b c d e
a b c d e

host-term3 # tail -f /tmp/corncob

host-term2 # ^C

host-term3 #
^C
a b c d e
a b c d e
a b c d e
a b c d e

渡す

おすすめ記事