このようにしてプロセスのPIDを開始するにはどうすればよいですか?

このようにしてプロセスのPIDを開始するにはどうすればよいですか?
#!/bin/bash

mkfifo /var/run/out
while true
do
    cat /var/run/out | nc -l 8080 > >(
        while read line
        do
            do some stuff
        done
    )
done

nc合計のpidをどのように取得できますかcat? $!を使用すると機能しません。 pidファイルに書きたいです。

ベストアンサー1

必要なものを実行するよりエレガントな方法があるかもしれませんが、次のように動作します。

do
    (cat /var/run/out& echo $! > cat_pid; wait) |
                            (nc -l 8080 <&0 & echo $! > nc_pid; wait) > >(

(読みやすくするために、末尾を別々の行に分割しました|)まで待つのです。 (実際には、コマンドを前景に戻します。)スコット <&0非同期プロセスがスクリプトから正しい標準入力を読み取るようにするためのヒントです。

しかし、なぜ「猫」を使うのですか??そして> >(…)単純パイプの代わりになぜ使用しましたか?

これは次のように単純化できます。

本当ではありますが
する
    (nc -l 8080 < /var/run/out & echo $! > nc_pid; 待機) |
                行を読むとき
                する
                    何かをしなさい
                完璧
完璧

nc直接読み、/var/run/outプロセスの置き換えの代わりに単純なパイプを使用してください。

おすすめ記事