自己的小網站跑在阿里云的ECS上面,偶爾也去分析分析自己網站服務器日志,看看網站的訪問量。看看有沒有黑闊搞破壞!于是收集,整理一些服務器日志分析命令,大家可以試試!
1、查看有多少個IP訪問:
awk'{print$1}'log_file|sort|uniq|wc-l
2、查看某一個頁面被訪問的次數:
grep"/index.php"log_file|wc-l
3、查看每一個IP訪問了多少個頁面:
awk'{++S[$1]}END{for(ainS)printa,S[a]}'log_file>log.txt
sort-n-t''-k2log.txt配合sort進一步排序
4、將每個IP訪問的頁面數進行從小到大排序:
awk'{++S[$1]}END{for(ainS)printS[a],a}'log_file|sort-n
5、查看某一個IP訪問了哪些頁面:
grep^111.111.111.111log_file|awk'{print$1,$7}'
6、去掉搜索引擎統計的頁面:
awk'{print$12,$1}'log_file|grep^"Mozilla|awk'{print$2}'|sort|uniq|wc-l
7、查看2015年8月16日14時這一個小時內有多少IP訪問:
awk'{print$4,$1}'log_file|grep16/Aug/2015:14|awk'{print$2}'|sort|uniq|wc-l
8、查看訪問前十個ip地址
awk'{print$1}'|sort|uniq-c|sort-nr|head-10access_log
uniq -c 相當于分組統計并把統計數放在最前面
cataccess.log|awk'{print$1}'|sort|uniq-c|sort-nr|head-10
cataccess.log|awk'{counts[$(11)]+=1};END{for(urlincounts)printcounts[url],url}
9、訪問次數最多的10個文件或頁面
catlog_file|awk'{print$11}'|sort|uniq-c|sort-nr|head-10
catlog_file|awk'{print$11}'|sort|uniq-c|sort-nr|head-20
awk'{print$1}'log_file|sort-n-r|uniq-c|sort-n-r|head-20
訪問量最大的前20個ip
10、通過子域名訪問次數,依據referer來計算,稍有不準
cataccess.log|awk'{print$11}'|sed-e's/http:////'-e's//.*//'|sort|uniq-c|sort-rn|head-20
11、列出傳輸大小最大的幾個文件
catwww.access.log|awk'($7~/.php/){print$10""$1""$4""$7}'|sort-nr|head-100
12、列出輸出大于200000byte(約200kb)的頁面以及對應頁面發生次數
catwww.access.log|awk'($10>200000&&$7~/.php/){print$7}'|sort-n|uniq-c|sort-nr|head-100
13、如果日志最后一列記錄的是頁面文件傳輸時間,則有列出到客戶端最耗時的頁面
catwww.access.log|awk'($7~/.php/){print$NF""$1""$4""$7}'|sort-nr|head-100
14、列出最最耗時的頁面(超過60秒的)的以及對應頁面發生次數
catwww.access.log|awk'($NF>60&&$7~/.php/){print$7}'|sort-n|uniq-c|sort-nr|head-100
15、列出傳輸時間超過 30 秒的文件
catwww.access.log|awk'($NF>30){print$7}'|sort-n|uniq-c|sort-nr|head-20
16、列出當前服務器每一進程運行的數量,倒序排列
ps-ef|awk-F'''{print$8""$9}'|sort|uniq-c|sort-nr|head-20
17、查看apache當前并發訪問數
對比httpd.conf中MaxClients的數字差距多少
netstat-an|grepESTABLISHED|wc-l
18、可以使用如下參數查看數據
ps-ef|grephttpd|wc-l
1388
統計httpd進程數,連個請求會啟動一個進程,使用于Apache服務器。
表示Apache能夠處理1388個并發請求,這個值Apache可根據負載情況自動調整
netstat-nat|grep-i"80"|wc-l
4341
netstat -an會打印系統當前網絡鏈接狀態,而grep -i "80"是用來提取與80端口有關的連接的,wc -l進行連接數統計。
最終返回的數字就是當前所有80端口的請求總數
netstat-na|grepESTABLISHED|wc-l
376
netstat -an會打印系統當前網絡鏈接狀態,而grep ESTABLISHED 提取出已建立連接的信息。然后wc -l統計最終返回的數字就是當前所有80端口的已建立連接的總數。
netstat-nat||grepESTABLISHED|wc
可查看所有建立連接的詳細記錄
19、輸出每個ip的連接數,以及總的各個狀態的連接數
netstat-n|awk'/^tcp/{n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N}END{for(ainS){printf("%-20s%s",a,S[a]);++I}printf("%-20s%s","TOTAL_IP",I);for(ains)printf("%-20s%s",a,s[a]);printf("%-20s%s","TOTAL_LINK",N);}'
20、其他的收集
分析日志文件下 2012-05-04 訪問頁面最高 的前20個 URL 并排序
cataccess.log|grep'04/May/2012'|awk'{print$11}'|sort|uniq-c|sort-nr|head-20
查詢受訪問頁面的URL地址中 含有 www.abc.com 網址的 IP 地址
cataccess_log|awk'($11~/www.abc.com/){print$1}'|sort|uniq-c|sort-nr
獲取訪問最高的10個IP地址 同時也可以按時間來查詢
catlinewow-access.log|awk'{print$1}'|sort|uniq-c|sort-nr|head-10
時間段查詢日志時間段的情況
catlog_file|egrep'15/Aug/2015|16/Aug/2015'|awk'{print$1}'|sort|uniq-c|sort-nr|head-10
分析2015/8/15 到 2015/8/16 訪問"/index.php?g=Member&m=Public&a=sendValidCode"的IP倒序排列
catlog_file|egrep'15/Aug/2015|16/Aug/2015'|awk'{if($7=="/index.php?g=Member&m=Public&a=sendValidCode")print$1,$7}'|sort|uniq-c|sort-nr
($7~/.php/) $7里面包含.php的就輸出,本句的意思是最耗時的一百個PHP頁面
catlog_file|awk'($7~/.php/){print$NF""$1""$4""$7}'|sort-nr|head-100
列出最最耗時的頁面(超過60秒的)的以及對應頁面發生次數
cataccess.log|awk'($NF>60&&$7~/.php/){print$7}'|sort-n|uniq-c|sort-nr|head-100
統計網站流量(G)
cataccess.log|awk'{sum+=$10}END{printsum/1024/1024/1024}'
統計404的連接
awk'($9~/404/)'access.log|awk'{print$9,$7}'|sort
統計http status
cataccess.log|awk'{counts[$(9)]+=1};END{for(codeincounts)printcode,counts[code]}'
cataccess.log|awk'{print$9}'|sort|uniq-c|sort-rn
每秒并發
watch"awk'{if($9~/200|30|404/)COUNT[$4]++}END{for(ainCOUNT)printa,COUNT[a]}'log_file|sort-k2-nr|head-n10"
帶寬統計
catapache.log|awk'{if($7~/GET/)count++}END{print"client_request="count}'
catapache.log|awk'{BYTE+=$11}END{print"client_kbyte_out="BYTE/1024"KB"}'
找出某天訪問次數最多的10個IP
cat/tmp/access.log|grep"20/Mar/2011"|awk'{print$3}'|sort|uniq-c|sort-nr|head
當天ip連接數最高的ip都在干些什么
cataccess.log|grep"10.0.21.17"|awk'{print$8}'|sort|uniq-c|sort-nr|head-n10
小時單位里ip連接數最多的10個時段
awk-vFS="[:]"'{gsub("-.*","",$1);num[$2""$1]++}END{for(iinnum)printi,num[i]}'log_file|sort-n-k3-r|head-10
找出訪問次數最多的幾個分鐘
awk'{print$1}'access.log|grep"20/Mar/2011"|cut-c14-18|sort|uniq-c|sort-nr|head
取5分鐘日志
if[$DATE_MINUTE!=$DATE_END_MINUTE];then#則判斷開始時間戳與結束時間戳是否相等
START_LINE=sed-n"/$DATE_MINUTE/="$APACHE_LOG|head-n1#如果不相等,則取出開始時間戳的行號,與結束時間戳的行號
查看tcp的鏈接狀態
查找請求數前20個IP(常用于查找攻來源):
netstat-anlp|grep80|greptcp|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|head-n20
netstat-ant|awk'/:80/{split($5,ip,":");++A[ip[1]]}END{for(iinA)printA[i],i}'|sort-rn|head-n20
用tcpdump嗅探80端口的訪問看看誰最高
tcpdump-ieth0-tnndstport80-c1000|awk-F"."'{print$1"."$2"."$3"."$4}'|sort|uniq-c|sort-nr|head-20
查找較多time_wait連接
netstat-n|grepTIME_WAIT|awk'{print$5}'|sort|uniq-c|sort-rn|head-n20
找查較多的SYN連接
netstat-an|grepSYN|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|more
根據端口列進程
netstat-ntlp|grep80|awk'{print$7}'|cut-d/-f1
查看了連接數和當前的連接數
netstat-ant|grep$ip:80|wc-l
netstat-ant|grep$ip:80|grepEST|wc-l
查看IP訪問次數
netstat-nat|grep":80"|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-n
Linux命令分析當前的鏈接狀況
netstat-n|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'
watch"netstat-n|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'"#通過watch可以一直監控
LAST_ACK5#關閉一個TCP連接需要從兩個方向上分別進行關閉,雙方都是通過發送FIN來表示單方向數據的關閉,當通信雙方發送了最后一個FIN的時候,發送方此時處于LAST_ACK狀態,當發送方收到對方的確認(Fin的Ack確認)后才真正關閉整個TCP連接;
SYN_RECV30#表示正在等待處理的請求數;
ESTABLISHED1597#表示正常數據傳輸狀態;
FIN_WAIT151#表示server端主動要求關閉tcp連接;
FIN_WAIT2504#表示客戶端中斷連接;
TIME_WAIT1057#表示處理完畢,等待超時結束的請求數;
責任編輯:xj
原文標題:這些 Shell 分析服務器日志命令集錦,收藏好
文章出處:【微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
-
服務器
+關注
關注
12文章
9133瀏覽量
85351 -
命令
+關注
關注
5文章
683瀏覽量
22017 -
Shell
+關注
關注
1文章
365瀏覽量
23359
原文標題:這些 Shell 分析服務器日志命令集錦,收藏好
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論