tee
コマンドを使うのは初めてです。
終了するのに時間がかかるプログラムの1つを実行しようとしていますが、進行中に情報が出力されます。'tee'を使用して、出力をファイルに保存し、シェル(bash
)で出力を確認しています。
しかし、問題はtee
、コマンドが終了するまで出力をシェルに転送しないことです。それを行う方法はありますか?
私はDebianとを使用していますbash
。
これは実際には、出力の量と、実行しているコマンドの実装によって異なります。stdout
常に何かを直接出力したりstderr
、フラッシュしたりする義務のあるプログラムはありません。そのため、ほとんどの C ランタイム実装は、 などのランタイム ルーチンの 1 つを使用して一定量のデータが書き込まれた後にフラッシュしますがprintf
、実装によってはそうではない場合があります。
tee
すぐには出力されません。コマンドの実行の最後にのみ入力を受け取る可能性があります。それがどの正確なコマンドであるかを言及すると役立つ場合があります。
発生した問題は、おそらくバッファリングに関連しています。次のことを行うstdbufコマンドを見ているかもしれません:
stdbuf - 標準ストリームのバッファリング操作を変更して、COMMAND を実行します。
使用法を投稿していただければ、より良い答えを出すことができますが、そのままです
(for i in `seq 10`; do echo $i; sleep 1s; done) | tee ./tmp
tee コマンドの適切な使用法であり、機能しているようです。パイプの前の部分をコマンドに置き換えれば、準備完了です。