stdbuf -o 0 |& tee log を使用する場合、stderr 出力はありません。

stdbuf -o 0 |& tee log を使用する場合、stderr 出力はありません。

次のコマンドを使用して、実行中のプログラムの標準出力とエラー情報を記録したいと思います。

  stdbuf -o 0 ./myprogram|& tee mylog

1台のコンピュータでうまく動作します。画面でstdoutを見ることができますが、mylog他のコンピュータでは画面とmylog。彼らはすべてFedora OSとx86_64です。

答え1

stdoutとstderrの両方をバッファリングされていない状態にしてみてください。

stdbuf -e 0 -o 0 ./myprogram |& tee mylog

編集する:元の答えを置き換えました。上記は問題に対する解決策である可能性が高いです。

答え2

COMMANDが標準ストリーム(「tee」など)のバッファリングを調整する場合、これは「stdbuf」変更の対応する設定をオーバーライドします。

ここを読んでください。https://linux.die.net/man/1/stdbuf

関連情報