私はBashで単純なログサーバーを実装しようとしています。それはパラメータとしてファイルをとり、netcatでポート上で提供する必要があります。Bashの別のプロセスにパイプされるプロセスのPIDを取得するには?
(tail -f $1 &) | nc -l -p 9977
しかし、問題は、netcatが終了すると、tailが実行中に残っていることです。 (明確化:もし私がtailプロセスをフォークしなければ、netcatが終了しても永遠に走り続けるだろう)
私は何とかテールのPIDを知っていれば、後でそれを殺すことができます。
明らかに、$! netcatのPIDを返します。
テールプロセスのPIDを取得するにはどうすればよいですか?
「&」を使用しないとどうなりますか? 'tail -f'はちょうどそこで待つことになっています。私は '&'が何を得ているのか分かりませんが、これはもっと大きなスクリプトの一部であるように見えます。とにかく、あなたがパイプを殺すと、私はテールが死ぬと思うでしょう(あなたがそれをバックグラウンドにしていない限り)。 –
私の貝殻の理解から、&この場合には、その意味で "バックグラウンドを開始"として使用されています。少なくとも、それは今私が見ている動作で、私自身の同様の問題に解決策を適用しようとしています。 – starturtle