2007-11-05 標準出力と標準エラーとfifo
■[計算機]標準出力と標準エラー出力を表示させながらも、それぞれ別のファイルに書き出す。

mkfiloとteeで出来る
「標準出力を画面に出しながらも、ファイルに書き出す」だけなら
command | tee log.txt
とすれば出来る。
標準エラー出力に対しても同じ事を、別々のファイルに書き出す事をしたい。
そのためにはmkfifoを使えばいい。
リンク先にまさにその事が書いてある。
http://mlog.euqset.org/archives/linux-users/102278.html
方法は
- 二つのfifoを作る
- fifoをteeにそれぞれリダイレクトする
- プログラムを、先のfifoにリダイレクトする形で実行する
- 終わったらfifoを削除
順番にスクリプトにすれば
mkfifo fifo_out mkfifo fifo_err tee log_out < fifo_out & tee log_err < fifo_err & command 1> fifo_out 2> fifo_err rm fifo_out fifo_err
teeを使ってるところでは&を忘れずに。
コメントを書く