したいこと
何らかのプログラムで実行途中のログが標準出力へと出力されるが,実行に時間がかかるので,途中経過を「リアルタイムで」確認しながら動かしたいし,同時にその記録をファイルに残しておきたい.
パイプでteeコマンドへ流してみる → 少々もやもや
そういえばteeコマンドというのがあったな,ということで,
$ ./myprogram | tee output.log
ところが,Ubuntu 16.04.03 LTS で試したところ(2018.02.01) 出力がバッファされてしまうようで,しばらく時間が経ってから標準出力にバサッと書き出され,しばらくまた時間が経ってから…というのを繰り返す.ちゃんと標準出力にもファイルにも出力されるが,「リアルタイムで」ないところがモヤモヤする.
解決方法
調べてみると,Stack Overflow の記事 で,こういうのがあって,試してみると成功し,「リアルタイムで」出力されるようになった.
$ script -c ./myprogram /dev/null | tee output.log
検証環境 (2018.02.02)
OS | バージョン |
---|---|
Linux Ubuntu | 16.04.03 LTS |
なお,Ubuntuにはほとんど手を入れていない状態.