私は以下に関連するいくつかのバッチスクリプトを作業しています。
- 終了しないサブプロセスの実行(非同期)
- 待つティー第二
- 他のタスクを実行するX一定期間
- サブプロセスの終了
理想的には、エクスポートされたサブプロセスの標準出力を区別できるようにしたいです。今後 Xから送られました後ろに X。
いくつかのアイデアを思いつきましたが、どのように実装するのかわかりません。
- 標準出力の廃棄ティー第二
- セクションを視覚的に区別するには、いくつかのテキスト(「タスクXが開始されました」など)を挿入します。
- stdoutをさまざまな出力ストリームに分割する
ベストアンサー1
exec
問題を複雑にすることもできますが、ファイル記述子引数、2番目の提案が最も簡単です。始める前にX、echo
ログファイルのタグ文字列です。
これらのコマンドはすべて同じファイルに追加されるため、すべての出力を前に追加することをお勧めします。Xフラグを使用すると、まだ実行されている以前のコマンドのいずれかと出力を区別できます。おおよそ次のようになります。
{ X; } | sed 's,^,[X say] ,'
これにより、さらなる分析が容易になります。これは安全ではなく、非常に長いプログラムでは競争条件が頻繁に発生します。
単一のログ行を破る機会があり、結果なしに最初のアプリケーションのデプロイを破ることができる場合は、次の方法も機能します。
{ Y; } >> log &
sleep $t
kill -STOP %% # last job, like the same as %1
echo -e "\nX started" >> log
kill -CONT %%
{ X; } >> log2