バックグラウンドでパイプラインbashスクリプトを実行する

バックグラウンドでパイプラインbashスクリプトを実行する

netcatを使用してローカルホスト通信を監視する監視スクリプトを作成しようとしています。私は2つのスクリプトを書いた。 1つは監視ループを開始することであり、もう1つはループ自体のためです。それらは次のとおりです。

起動ファイル

#!/bin/bash
netcat localhost 1099  | bash loop.sh &

ループドア

#!/bin/bash
while read sInput; do
     ...do something with $sInput
done

フォアグラウンドなしでこのアプリを実行するだけでは問題ありませんが、バックグラウンドでこのスクリプトを実行しようとするとすぐに実行が中断されます。これが起こる理由と、この問題を軽減する方法を教えてくれる人はいますか?

私の究極の目標は、アーチLinuxデーモンスクリプトを生成し、すべてが完全に実行されるようにするために使用できるbashスクリプトを持つことです。ご協力ありがとうございます。

ベストアンサー1

標準入力(stdin)から読むようです。-d(標準入力から読み取ろうとしない)オプションをに追加するか、netcatコマンドラインからリダイレクトしてみてください。

netcat localhost 1099 <&- | bash loop.sh &

nohupシェルが停止する前にシャットダウンしている場合は、悪影響を受けないようにするためにそれを使用することもできます。

おすすめ記事