有日誌 1.log,部分內容如下:
統計出每個 ip 的訪問量有多少
習題分析
這種分析日誌的需求,在平時工作中很常見,而且找運維工作時的筆試題裡面出現頻率也非常多。
根據日誌內容,可以看到 ip 位址就是第一段內容,所以只需要把 1.log 的第一段給過濾出來,然後近一步統計每乙個 ip 的量即可。
過濾第一段,使用 awk 就可以很容易得到,而統計每個 ip 的訪問量則需要排序然後再計算數量,
排序使用 sort 命令,統計每個 ip 訪問量用 uniq。
習題答案
awk '' 1.log |sort -n |uniq -c |sort -n
答案解析
awk 命令在分段方面還是比較有優勢的,這裡的講第一段列印出來,awk 可以用-f 指定分隔符,如果不指定分隔符,預設就以空白字元(比如空格、tab 等),本題中,ip 位址就是在第一段。
sort 命令是排序的命令,-n 選項表示以數字的形式排序,如果不加-n,則以 ascii 排序,本題中的 ip 位址以數字的形式排序更容易區分。
uniq 命令是用來去重複的,乙個文字中如果有多行內容是一模一樣的,使用 uniq 命令就可以把相同內容的行給刪除掉,只留一行。而-c 選項的作用是計算重複的行數,所以在此題中使用 uniq -c 正好可以計算 ip 位址的訪問數量。不過,大家一定要注意,uniq 去重的前提是首先要排序。
本題答案裡最後沒得 sort -n 意思是按訪問量大小來排序,請求量越大的 ip 排在越後面,如果要想排在前面,可以加乙個-r 選項,即 sort –nr
shell統計ip訪問情況並分析訪問日誌
統計出每個 ip 的訪問量有多少 習題分析 這種分析日誌的需求,在平時工作中很常見,而且找運維工作時的筆試題裡面出現頻率也非常多。根據日誌內容,可以看到 ip 位址就是第一段內容,所以只需要把 1.log 的第一段給過濾出來,然後近一步統計每乙個 ip 的量即可。過濾第一段,使用 awk 就可以很容...
Shell習題02 統計IP訪問量
題目要求 有日誌1.log,部分內容如下 112.111.12.248 25 sep 2013 16 08 31 0800 formula x.haotui.com seccode.php?update 0.5593110133088248 200 mozilla 4.0 compatible ms...
nginx 檢視訪問 IP 並封禁 IP 詳解
1 查詢伺服器所有訪問者ip方法 awk nginx access.log sort uniq c sort nnginx.access.log 為nginx訪問日誌檔案所在路徑 會到如下結果,前面是ip的訪問次數,後面是ip,很明顯我們需要把訪問次數多的ip並且不是蜘蛛的ip遮蔽掉,如下面結果,若...