要求に応じて出力を新しいファイルに動的にリダイレクトするツールはありますか?

要求に応じて出力を新しいファイルに動的にリダイレクトするツールはありますか?

私は現在監視ツールの出力をファイルにリダイレクトしていますが、私が望むのは、そのツールを停止せずに私の要求に応じて(キーバインディングを使用)、この出力を新しいファイルにリダイレクトすることです。

それはまるで

monitor_program | handle_stdout

Whereをhandle_stdout使用すると、特定の場所にログを配置する新しいファイルを定義できます。

簡単に書くことができることを知っていますが、すでにこれを可能にするツールがあるかどうか疑問に思います。

ベストアンサー1

私は名前付きパイプを提案したいと思います。

  1. パイプを作成しますmkfifo p(「p」がない場合は、必要に応じて名前を付けることができます)。

  2. パイプから読み込み、必要な場所に書き込む「リーダー」スクリプトを作成します。

  3. 名前付きパイプにログを書き込むようにモニタープログラムに指示します。

以下は、名前付きパイプ「p」からデータを読み取り、そのデータをインデックス「mylog」ファイルに書き込むサンプルリーダースクリプトです。

#!/bin/sh

INDEX=0

switchlog() {
  read INDEX < newindex
  echo now writing to "mylog.$INDEX"
}

trap switchlog USR1

while :
do
  cat p >> mylog."$INDEX"
done

おすすめ記事