下面這3個命令是很是好用的日誌分析命令,以apache的日誌文件access_log爲例 apache
當網絡流量忽然持續異常時,頗有多是有惡意訪問,最快的解決方式就是找出訪問量最多的幾個ip,暫時禁止其訪問,而後再仔細觀察 網絡
# cat access_log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10 優化
瞭解哪些Url資源的訪問量最大,能夠幫助咱們有針對性的進行優化 ui
# cat access_log | cut -f7 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10 spa
文件大小太大的話會嚴重影響訪問速度,有必要找出大文件進行分析 日誌
# cat access_log | sort -k 10 -n -r | head -10 排序
命令解釋 ip
這幾個命令都是使用了管道「|」把多個命令進行鏈接,上一個命令的結果交給下一個命令來處理
cat
顯示文件內容
cut
是一個選取命令,就是將數據以行爲單位進行分析,取出咱們想要的
-d : 自定義分隔符,默認爲製表符
-f : 與-d一塊兒使用,指定顯示哪列
第一個命令中的:cut -f1 -d " "
含義:以空格進行分割,顯示結果中的第一列
sort
將文件的每一行做爲一個單位,相互比較,比較原則是從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出
沒有參數時就是整行排序
-t : 分隔符,默認是用 [tab] 鍵來分隔
-k : 選擇以哪列進行排序
-n : 使用數字格式進行排序,默認是以文字型態來排序的
-r : 反向排序
uniq
首先比較相鄰的行,而後除去第二行和該行的後續副本,重複的行必定要相鄰,因此一般與 sort 聯合使用,先用 sort 進行排序,而後使用 uniq 去重
-c : 在輸出行前面加上每行出現的次數
head
顯示結果中頭部區域
-10 : 顯示頭部的10行資源
綜合解釋 class
日誌文件的內容示例184.195.232.39 - - [28/Dec/2015:22:31:48 +0800] "GET /ui-nav.js HTTP/1.1" 304 -184.195.232.39 - - [28/Dec/2015:22:31:48 +0800] "GET /ui-toggle.js HTTP/1.1" 304 -184.195.232.38 - - [28/Dec/2015:22:31:48 +0800] "GET /ui-toggle.js HTTP/1.1" 304 -以第一個命令(查看訪問量最大的前10個IP)爲例# cat access_log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10cat access_log先讀取 access_log 的內容cut -f1 -d " "而後對每行以空格進行分割,只顯示第一列(日誌的第一列爲IP)輸出的結果爲:184.195.232.39184.195.232.39184.195.232.38sort接下來對IP進行升序排序輸出的結果爲:184.195.232.38184.195.232.39184.195.232.39uniq -c刪除重複的IP,刪除的同時記錄下相同的IP數量,顯示到IP的前面輸出的結果爲:1 184.195.232.382 184.195.232.39sort -k 1 -n -r對第一列以數字格式倒序排序輸出的結果爲:2 184.195.232.391 184.195.232.38head -10只顯示頭10條