Shell常用服務(wù)器日志分析命令總結(jié)
1、查看有多少個IP訪問
awk?'{print?$1}'?log_file|sort|uniq|wc?-l
2、查看某一個頁面被訪問的次數(shù)
grep?"/index.php"?log_file?|?wc?-l
3、查看每一個IP訪問了多少個頁面
awk?'{++S[$1]}?END?{for?(a?in?S)?print?a,S[a]}'?log_file?>?log.txt sort?-n?-t?'?'?-k?2?log.txt?配合sort進一步排序
4、將每個IP訪問的頁面數(shù)進行從小到大排序
awk?'{++S[$1]}?END?{for?(a?in?S)?print?S[a],a}'?log_file?|?sort?-n
5、查看某一個IP訪問了哪些頁面
grep?^111.111.111.111?log_file|?awk?'{print?$1,$7}'
6、去掉搜索引擎統(tǒng)計的頁面
awk?'{print?$12,$1}'?log_file?|?grep?^\"Mozilla?|?awk?'{print?$2}'?|sort?|?uniq?|?wc?-l
7、查看2015年8月16日14時這一個小時內(nèi)有多少IP訪問
awk?'{print?$4,$1}'?log_file?|?grep?16/Aug/2015:14?|?awk?'{print?$2}'|?sort?|?uniq?|?wc?-l
8、查看訪問前十個ip地址
awk?'{print?$1}'?|sort|uniq?-c|sort?-nr?|head?-10?access_log
uniq -c 相當(dāng)于分組統(tǒng)計并把統(tǒng)計數(shù)放在最前面
cat?access.log|awk?'{print?$1}'|sort|uniq?-c|sort?-nr|head?-10
cat?access.log|awk?'{counts[$(11)]+=1};?END?{for(url?in?counts)?print?counts[url],?url}
9、訪問次數(shù)最多的10個文件或頁面
cat?log_file|awk?'{print?$11}'|sort|uniq?-c|sort?-nr?|?head?-10 cat?log_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、通過子域名訪問次數(shù)
依據(jù)referer來計算,稍有不準(zhǔn)
cat?access.log?|?awk?'{print?$11}'?|?sed?-e?'?s/http:\/\///'?-e?'?s/\/.*//'?|?sort?|?uniq?-c?|?sort?-rn?|?head?-20
11、列出傳輸大小最大的幾個文件
cat?www.access.log?|awk?'($7~/\.php/){print?$10?"?"?$1?"?"?$4?"?"?$7}'|sort?-nr|head?-100
12、列出輸出大于200000byte(約200kb)的頁面以及對應(yīng)頁面發(fā)生次數(shù)
cat?www.access.log?|awk?'($10?>?200000?&&?$7~/\.php/){print?$7}'|sort?-n|uniq?-c|sort?-nr|head?-100
13、如果日志最后一列記錄的是頁面文件傳輸時間,則有列出到客戶端最耗時的頁面
cat?www.access.log?|awk?'($7~/\.php/){print?$NF?"?"?$1?"?"?$4?"?"?$7}'|sort?-nr|head?-100
14、列出最最耗時的頁面(超過60秒的)的以及對應(yīng)頁面發(fā)生次數(shù)
cat?www.access.log?|awk?'($NF?>?60?&&?$7~/\.php/){print?$7}'|sort?-n|uniq?-c|sort?-nr|head?-100
15、列出傳輸時間超過 30 秒的文件
cat?www.access.log?|awk?'($NF?>?30){print?$7}'|sort?-n|uniq?-c|sort?-nr|head?-20
16、列出當(dāng)前服務(wù)器每一進程運行的數(shù)量,倒序排列
ps?-ef?|?awk?-F?'?'?'{print?$8?"?"?$9}'?|sort?|?uniq?-c?|sort?-nr?|head?-20
17、查看apache當(dāng)前并發(fā)訪問數(shù)
對比httpd.conf中MaxClients的數(shù)字差距多少
netstat?-an?|?grep?ESTABLISHED?|?wc?-l
18、可以使用如下參數(shù)查看數(shù)據(jù)
ps?-ef|grep?httpd|wc?-l 1388
統(tǒng)計httpd進程數(shù),連個請求會啟動一個進程,使用于Apache服務(wù)器。
表示Apache能夠處理1388個并發(fā)請求,這個值A(chǔ)pache可根據(jù)負(fù)載情況自動調(diào)整
netstat?-nat|grep?-i?"80"|wc?-l 4341
netstat -an會打印系統(tǒng)當(dāng)前網(wǎng)絡(luò)鏈接狀態(tài),而grep -i “80”是用來提取與80端口有關(guān)的連接的,wc -l進行連接數(shù)統(tǒng)計。
最終返回的數(shù)字就是當(dāng)前所有80端口的請求總數(shù)
netstat?-na|grep?ESTABLISHED|wc?-l 376
netstat -an會打印系統(tǒng)當(dāng)前網(wǎng)絡(luò)鏈接狀態(tài),而grep ESTABLISHED 提取出已建立連接的信息。然后wc -l統(tǒng)計
最終返回的數(shù)字就是當(dāng)前所有80端口的已建立連接的總數(shù)。
netstat?-nat||grep?ESTABLISHED|wc
可查看所有建立連接的詳細(xì)記錄
19、輸出每個ip的連接數(shù),以及總的各個狀態(tài)的連接數(shù)
netstat?-n?|?awk?'/^tcp/?{n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N}?END?{for(a?in?S){printf("%-20s?%s\n",?a,?S[a]);++I}printf("%-20s?%s\n","TOTAL_IP",I);for(a?in?s)?printf("%-20s?%s\n",a,?s[a]);printf("%-20s?%s\n","TOTAL_LINK",N);}'
20、其他的收集
分析日志文件下 2012-05-04 訪問頁面最高 的前20個 URL 并排序
cat?access.log?|grep?'04/May/2012'|?awk?'{print?$11}'|sort|uniq?-c|sort?-nr|head?-20
查詢受訪問頁面的URL地址中 含有 www.abc.com 網(wǎng)址的 IP 地址
cat?access_log?|?awk?'($11~/\www.abc.com/){print?$1}'|sort|uniq?-c|sort?-nr
獲取訪問最高的10個IP地址 同時也可以按時間來查詢
cat?linewow-access.log|awk?'{print?$1}'|sort|uniq?-c|sort?-nr|head?-10
時間段查詢?nèi)罩緯r間段的情況
cat?log_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倒序排列
cat?log_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頁面
cat?log_file?|awk?'($7~/\.php/){print?$NF?"?"?$1?"?"?$4?"?"?$7}'|sort?-nr|head?-100
列出最最耗時的頁面(超過60秒的)的以及對應(yīng)頁面發(fā)生次數(shù)
cat?access.log?|awk?'($NF?>?60?&&?$7~/\.php/){print?$7}'|sort?-n|uniq?-c|sort?-nr|head?-100
統(tǒng)計網(wǎng)站流量(G)
cat?access.log?|awk?'{sum+=$10}?END?{print?sum/1024/1024/1024}'
統(tǒng)計404的連接
awk?'($9?~/404/)'?access.log?|?awk?'{print?$9,$7}'?|?sort
統(tǒng)計http status
cat?access.log?|awk?'{counts[$(9)]+=1};?END?{for(code?in?counts)?print?code,?counts[code]}' cat?access.log?|awk?'{print?$9}'|sort|uniq?-c|sort?-rn
每秒并發(fā)
watch?"awk?'{if($9~/200|30|404/)COUNT[$4]++}END{for(?a?in?COUNT)?print?a,COUNT[a]}'?log_file|sort?-k?2?-nr|head?-n10"
帶寬統(tǒng)計
cat?apache.log?|awk?'{if($7~/GET/)?count++}END{print?"client_request="count}'
找出某天訪問次數(shù)最多的10個IP
cat?/tmp/access.log?|?grep?"20/Mar/2011"?|awk?'{print?$3}'|sort?|uniq?-c|sort?-nr|head
當(dāng)天ip連接數(shù)最高的ip都在干些什么
cat?access.log?|?grep?"10.0.21.17"?|?awk?'{print?$8}'?|?sort?|?uniq?-c?|?sort?-nr?|?head?-n?10
小時單位里ip連接數(shù)最多的10個時段
awk?-vFS="[:]"?'{gsub("-.*","",$1);num[$2"?"$1]++}END{for(i?in?num)print?i,num[i]}'?log_file?|?sort?-n?-k?3?-r?|?head?-10
找出訪問次數(shù)最多的幾個分鐘
awk?'{print?$1}'?access.log?|?grep?"20/Mar/2011"?|cut?-c?14-18|sort|uniq?-c|sort?-nr|head
取5分鐘日志
if [ $DATE_MINUTE != $DATE_END_MINUTE ] ;then #
則判斷開始時間戳與結(jié)束時間戳是否相等
START_LINE=sed -n "/$DATE_MINUTE/=" $APACHE_LOG|head -n1
#如果不相等,則取出開始時間戳的行號,與結(jié)束時間戳的行號
查看tcp的鏈接狀態(tài)
netstat?-nat?|awk?'{print?$6}'|sort|uniq?-c|sort?-rn? netstat?-n?|?awk?'/^tcp/?{++S[$NF]};END?{for(a?in?S)?print?a,?S[a]}'? netstat?-n?|?awk?'/^tcp/?{++state[$NF]};?END?{for(key?in?state)?print?key,"\t",state[key]}'? netstat?-n?|?awk?'/^tcp/?{++arr[$NF]};END?{for(k?in?arr)?print?k,"\t",arr[k]}'? netstat?-n?|awk?'/^tcp/?{print?$NF}'|sort|uniq?-c|sort?-rn? netstat?-ant?|?awk?'{print?$NF}'?|?grep?-v?'[a-z]'?|?sort?|?uniq?-c netstat?-ant|awk?'/ip:80/{split($5,ip,":");++S[ip[1]]}END{for?(a?in?S)?print?S[a],a}'?|sort?-n? netstat?-ant|awk?'/:80/{split($5,ip,":");++S[ip[1]]}END{for?(a?in?S)?print?S[a],a}'?|sort?-rn|head?-n?10? awk?'BEGIN{printf?("http_code\tcount_num\n")}{COUNT[$10]++}END{for?(a?in?COUNT)?printf?a"\t\t"COUNT[a]"\n"}'
查找請求數(shù)前20個IP(常用于查找攻來源)
netstat?-anlp|grep?80|grep?tcp|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(i?in?A)?print?A[i],i}'?|sort?-rn|head?-n20
用tcpdump嗅探80端口的訪問看看誰最高
tcpdump?-i?eth0?-tnn?dst?port?80?-c?1000?|?awk?-F"."?'{print?$1"."$2"."$3"."$4}'?|?sort?|?uniq?-c?|?sort?-nr?|head?-20
查找較多time_wait連接
netstat?-n|grep?TIME_WAIT|awk?'{print?$5}'|sort|uniq?-c|sort?-rn|head?-n20
找查較多的SYN連接
netstat?-an?|?grep?SYN?|?awk?'{print?$5}'?|?awk?-F:?'{print?$1}'?|?sort?|?uniq?-c?|?sort?-nr?|?more
根據(jù)端口列進程
netstat?-ntlp?|?grep?80?|?awk?'{print?$7}'?|?cut?-d/?-f1
查看了連接數(shù)和當(dāng)前的連接數(shù)
netstat?-ant?|?grep?$ip:80?|?wc?-l? netstat?-ant?|?grep?$ip:80?|?grep?EST?|?wc?-l
查看IP訪問次數(shù)
netstat?-nat|grep?":80"|awk?'{print?$5}'?|awk?-F:?'{print?$1}'?|?sort|?uniq?-c|sort?-n
Linux命令分析當(dāng)前的鏈接狀況
netstat?-n?|?awk?'/^tcp/?{++S[$NF]}?END?{for(a?in?S)?print?a,?S[a]}'
watch "netstat -n | awk '/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}'"
#通過watch可以一直監(jiān)控
LAST_ACK 5 #關(guān)閉一個TCP連接需要從兩個方向上分別進行關(guān)閉,雙方都是通過發(fā)送FIN來表示單方向數(shù)據(jù)的關(guān)閉,當(dāng)通信雙方發(fā)送了最后一個FIN的時候,發(fā)送方此時處于LAST_ACK狀態(tài),當(dāng)發(fā)送方收到對方的確認(rèn)(Fin的Ack確認(rèn))后才真正關(guān)閉整個TCP連接;
SYN_RECV 30 # 表示正在等待處理的請求數(shù);
ESTABLISHED 1597 # 表示正常數(shù)據(jù)傳輸狀態(tài);
FIN_WAIT1 51 # 表示server端主動要求關(guān)閉tcp連接;
FIN_WAIT2 504 # 表示客戶端中斷連接;
TIME_WAIT 1057 # 表示處理完畢,等待超時結(jié)束的請求數(shù);
到此這篇關(guān)于Shell常用服務(wù)器日志分析命令總結(jié)的文章就介紹到這了,更多相關(guān)Shell服務(wù)器日志分析命令內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。