grep, awk, sed でバッファしない方法

こんにちは、TechscoreBlogのログ閲覧が日課になっている河野です。

ログをtailでリアルタイムに見ているときに、grep, awk, sedと組み合わせることがあります。ところが、特にオプションを指定しないと、各コマンドでバッファされてしまうので、ログの表示が遅延することがあります。単にアクセス状況を眺めているだけなら問題ありませんが、チューニングしてる時とか気になりますよね。

そんなわけで、今回はバッファさせない方法を紹介します。

grep : --line-buffered

grepでのオプションです。正確にはバッファさせないのではなくて、1行毎に出力するというオプションです。

awk : fflush

awkで、バッファを出力するという関数です。printの後にすぐ呼び出すようにすれば、余計なバッファを回避できるようです。

sed : --unbuffered, -u

sedでバッファしないというオプションです。「ちょくちょく出力バッファーに掃出」とヘルプに書いてあります。

それぞれtailと組み合わせるだけだとあまり気にならないんですが、pipeで3つ以上組み合わせるとバッファしてる影響がけっこう出てきます。

無理矢理組み合わせると、こんな感じでしょうか。

これでより良いログ監視がたぶんできますね!

Comments are closed, but you can leave a trackback: Trackback URL.

Trackbacks