小規模なログの集計に便利なコマンドのメモ
2018/09/27
Linuxのコマンドって便利なんだけど何が便利なのかわからないっていう人がいたんだけど
まぁ昔初心者時代に覚えて教えてもらった時にちょっと感動したコマンドを・・・
といっても「この時間にどこから何回アクセスが来たの」
程度ですけど覚えておくと汎用性があって簡単にできるので
あとついでに自分のメモの代わりとして書いておきます
ログフォーマットの例
192.168.1.1 - - [06/Jun/2013:22:28:28 +0900] "GET /blog.cgi HTTP/1.1" 200 44408
コマンドの例(例のログファイル名はaccess_logです)
grep "06\/Jun\/2013\:22" access_log | grep -v bot | cut -d" " -f1 | sort | uniq -c
出力例(IPごとに集計されます)
1 192.168.1.40
とコマンドを何種類かパイプでつなげた感じです。
コマンドの意味はこんな感じ、
1 grep コマンドでアクセスログから特定の時間を抽出
2 grep コマンドでbotがある行以外を出力を抽出(-vオプションでマッチしない行を抽出)
3 cutコマンドでスペースで区切られたうちの1番目のフィールドを抽出
4 sortコマンドで並べ替えを行う
5 uniqコマンドで行数を集計して抽出(-cオプションで行を集計)
これをパイプでつなげて処理するとこのIPからこの時間帯に何回アクセスがあったかがわかるのです
まぁもっとエラーのない接続だけ抽出したり、BOTの削除のところを細かく指定した方がいいとは思いますが・・・
ちょっとした集計などで便利です♪
こんなことでも少しだけLINUXが好きになったりしてくれたらうれしいかな(=~=
※このコマンドを使用した時に発生した損害などは一切責任取りません。
コマンド間違ったり自分はこんなコマンドで感動したとかあったら教えてくれたらうれしいです。
コマンドはそのOSによって使えないとかあるかもしれないのでよくmanコマンドを読むなり
テスト環境で確認するなりしてから使ってくださいね。
grepコマンドの参考
ITPro LINUXコマンド集 grep
cutコマンドの参考
ITPro LINUXコマンド集 cut
sortコマンドの参考
ITPro LINUXコマンド集 sort
uniqコマンドの参考
ITPro LINUXコマンド集 uniq