2011年 4月 25日 はてなブックマーク -

$ time tail -n 1000000 hogehoge.log | head > /dev/null

real 0m35.462s
user 0m0.156s
sys 0m0.305s

$ time tail -c 10000000000 fugafuga.log | head > /dev/null

real 0m0.011s
user 0m0.000s
sys 0m0.001s

大抵のログには各行にタイムスタンプがあると思いますので、-cの数を適当に調整しながら headで先頭を見るというのを何度か繰り返して、欲しい辺りを探すと良いと思います。

ちなみにheadだと-cも遅いですね。

tailコマンドって-c使うと超速い - As a Futurist…

例えばアクセスログで末尾から10000000行目辺りをみたいとかいうときに

$ tail -n 10000000 access_log | head

とかするとかなり遅いと思います。これはログの後ろの方から読み込みながら 行数を計算しているからで、10000000行分数えないとどこから表示すればいいのかわからないので なかなか結果が返ってこなくてヤキモキしてしまいます。

こんなときに、-cというオプション(ファイルの末尾からNバイト分を表示)を使うと超高速で結果が返ってきます。


1年前 | | 2011年 4月 25日 | このエントリーを含むはてなブックマーク