2011-11-17 123 views
13

我需要解析Apache日誌文件以查找特定的可疑模式(如SQL注入)。Apache grep大日誌文件

比如我要找id='%20or%201=1;

我使用grep來檢查此模式(及其他)日誌文件,因爲這些日誌是巨大的花費相當長的時間量

這裏我的命令:

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

是否有更好或更快的方法或命令我需要使用來使搜索更快?

回答

22

對於初學者,您不需要將您的grep輸出輸出到egrepegrep提供grep的正則表達式解析的超集,所以你可以這樣做:

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

調用egrep是相同的調用grep -E

這可能會讓你的表現有所提升。如果您可以查找固定字符串而不是正則表達式,那也可能有所幫助。你可以告訴grep來尋找一個固定的字符串與-F選項:

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

但使用固定的字符串,你失去了很多的靈活性。

+0

讓我試試這個 – aki

+0

謝謝它比我的代碼少了21分鐘 – aki

0

我假設大部分時間都是在從磁盤獲取數據時使用的(CPU使用率沒有最大化)。那麼你不能優化查詢。你可以嘗試只記錄在一個單獨的文件有趣的行,雖然....

0

你在尋找grep -E "id=(' or|'%20)" apache.log