stdoutを維持しながらstderrをパイプすることは可能ですか? [コピー]

stdoutを維持しながらstderrをパイプすることは可能ですか? [コピー]

状態情報を標準出力に記録し、デバッグ情報を標準エラーに記録する長期実行プロセスがあります。

loggerstderrで書かれたすべての内容が実際にsyslogに移動しながらプロセスのstdoutを読むことができるように、stderr出力をパイプで接続したいと思います。

これは可能ですか?

ベストアンサー1

{ cmd 2>&1 >&3 3>&- | logger 3>&-; } 3>&1

アイデアは外のstdoutはファイル記述子(fd)3にコピーされ、stdoutに復元さcmdれますが、cmdのファイル記述子2(stderr)自体はロガーのパイプに移動します。

これは3>&-cmdおよびloggerコマンドが必要/使用されないため、その目的を実行した後にfdを閉じることです。

おすすめ記事