2011-11-17 4 views
13

特定の疑わしいパターン(SQLインジェクションなど)を探すためにApacheログファイルを解析する必要があります。Apache grep big logファイル

たとえば、私は、私はこのパターン(およびその他)のログファイルをチェックするためにはgrepを使用していますid='%20or%201=1;

を探していると、これらのログが巨大であるため、それはここで時間

の長い量を要します私のコマンド:

grep 'id=' Apache.log | egrep "' or|'%20" 

より速く、より速い方法やコマンドがありますか?検索を高速化するために使用する必要がありますか?ディスクからデータを取得しながら、私はあなたのほとんどの時間を想定し

答えて

22

手始めに、あなたはegrepにパイプにごgrep出力を必要としません。あなただけのこの操作を行うことができますのでegrepは、パースgrepの正規表現のスーパーセットを提供します。

egrep "id='(or|%20)'" apache.log 

egrepを呼び出すと、grep -Eを呼び出すことと同じです。あなたは少しの性能向上を得ることができます

。正規表現ではなく固定文字列を探すことができれば、それは役に立ちます。あなたは-Fオプションを使用して固定文字列を探すためにgrepを伝えることができます:

grep -F "id='%20or" apache.log 

しかし、あなたは多くの柔軟性を失うの固定文字列を使用します。

+0

私はそれが21分以下に私のコードよりもかかったこの – aki

+0

感謝を試してみましょう – aki

0

は、(CPU使用率が限界に達していない)に費やされています。クエリを最適化することはできません。あなただけ

0

....しかし別々のファイルに興味深い行をログに記録しようとすることができますがgrep -E "id=(' or|'%20)" apache.logをお探しですか?

関連する問題