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