aというファイルがあったとして
b
c
tac thinkpad.txt すると
cになります。cat を逆転したものだから tac
b
a
ところで
この tac コマンドの使いどころを考えていたら
こんなことを思いついた。
何かあった時にサーバのログを見る場合
たいてい見たいログは直近のログであることが多い。
そんな時
less /var/log/httpd/access_log
して G で一番下の行に移動するんですが、
ログのサイズがでかい場合
less が最終行を読み込むまで G でジャンプできずにイライラします。
そこで
tac /var/log/httpd/access_log | less
127.0.0.1 - - [27/Jan/2011:21:07:32 +0900] "GET /flash/exapmle/exapmle.swf HTTP/1.1" 200 49658 "http://example.com/exapmle/exapmle.swf" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.6; .NET CLR 1.1.4322)" 13846ログは順番が逆転してしまうけど、直近のログがサクッと開くので快適
127.0.0.1 - - [27/Jan/2011:21:07:32 +0900] "GET /flash/se/exapmle.mp3 HTTP/1.1" 200 10414 "http://example.com/exapmle/exapmle.swf" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.6; .NET CLR 1.1.4322)" 297
127.0.0.1 - - [27/Jan/2011:21:07:31 +0900] "POST /save/exapmle/?tm=Thu%20Jan%2027%2021:07:33%20GMT+0900%202011 HTTP/1.1" 200 444 "http://example.com/flash/exapmle.swf" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; ja-jp) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/4.1.3 Safari/533.19.4" 45813
ログを見るだけに特化すれば順番が逆でもまったく問題ない。
いちいちパイプにつなぐのがめんどくさいのでlessを逆転したsselをでっちあげた
.zshrcに以下を書いておく
function ssel() {
tac $1 | less
}
ssel /var/log/httpd/access_log
127.0.0.1 - - [27/Jan/2011:21:07:32 +0900] "GET /flash/exapmle/exapmle.swf HTTP/1.1" 200 49658 "http://example.com/exapmle/exapmle.swf" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.6; .NET CLR 1.1.4322)" 13846おもちゃ箱をひっくり返して遊んでいる感じがでていてよい
127.0.0.1 - - [27/Jan/2011:21:07:32 +0900] "GET /flash/se/exapmle.mp3 HTTP/1.1" 200 10414 "http://example.com/exapmle/exapmle.swf" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.6; .NET CLR 1.1.4322)" 297
127.0.0.1 - - [27/Jan/2011:21:07:31 +0900] "POST /save/exapmle/?tm=Thu%20Jan%2027%2021:07:33%20GMT+0900%202011 HTTP/1.1" 200 444 "http://example.com/flash/exapmle.swf" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; ja-jp) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/4.1.3 Safari/533.19.4" 45813
ついでに
/var/log/httpd/access_log.1.gz のような圧縮されたログもあるので
zless を逆転した sselz もでっちあげておく
.zshrcに
function sselz() {これについては zcat でファイルを開いてから tac するので遅いけど
zcat $1 | tac | less
}
ssel に慣れて sselz も欲しくなったのでよしとする

関連する記事
0 コメント:
コメントを投稿