2つのバックグラウンドプロセスのインターリーブされた出力を区別する方法

2つのバックグラウンドプロセスのインターリーブされた出力を区別する方法

STDOUTまたはSTDERRへの入力を生成する2つのバックグラウンドプロセス(2つのインストールスクリプトなど)がある場合、2つの出力ストリームを簡単に区別する方法はありますか?各出力行に異なるラベルを付けたsedプログラムを使用して各プロセスの出力をパイプ処理できると仮定しますが、より簡単なものを探しています。

答え1

最も簡単な解決策は、2つのバックグラウンドタスクを開始し、その出力をファイルにリダイレクトすることです。

 utility1 >utility1.out 2>utility1.err &
 utility2 >utility2.out 2>utility2.err &

これのもう一つの利点は、出力によって端子が詰まらないことです。

明らかに、エラーストリームと出力ストリームを同じファイルにリダイレクトすることもできます。

 utility1 >utility1.out 2>&1 &
 utility2 >utility2.out 2>&1 &

以下も使用できますtmux

 tmux new "utility1" ';' split "utility2"

tmuxすべてのコマンドは終了後すぐに終了します。これを防ぐため"utility"にに変更してください"utility;read"。これにより、を押すまでウィンドウが開いたままになりますEnter

関連情報