有时我们需要分析我们的网站服务器日志,以查看网站的访问量。让我们看看有没有人故意破坏!所以收集整理一些服务器日志分析命令,可以尝试一下。
: 目录
1.检查有多少ip访问。2.检查某个页面被访问了多少次。3.检查每个IP访问了多少页面。4.将每个IP访问的页面数从小到大排序。5.检查某个IP访问过哪些页面。6.删除搜索引擎统计的页面。7.查看2015年8月16日14: 00这一小时有多少IP访问。8.检查前十个IP地址。访问的前10个文件或页面10、按子域名的访问次数11、列出传输大小最大的几个文件12、列出输出大于200000字节(约200kb)的页面以及对应的页面出现次数13。如果日志的最后一列记录了页面文件传输时间,则向客户端列出了最耗时的页面14、最耗时的页面(超过60秒的页面)以及对应的页面出现次数15、传输时间超过30秒的文件16、当前服务器运行的每个进程的数量、逆序17、当前apache的并发访问次数18、 可以通过使用以下参数查看的数据19,每个ip的连接数和每个状态的总连接数20,以及其他集合。
1、查看有多少个IP访问
awk“{ print $ 1 }”log _ file | sort | uniq | WC-l
2、查看某一个页面被访问的次数
grep/index.phplog_file|wc-l
3、查看每一个IP访问了多少个页面
awk{ S[$1]}END{for(ainS)printa,S[a]}log_filelog.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 | 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相当于把统计数据分组,把统计数据放在最前面。
cataccess . log | awk“{ print $ 1 }”| sort | uniq-c | sort-NR | head-10
cataccess . log | awk { counts[$(11)]=1 };END { for(URL incounts)print counts[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)的页面以及对应页面发生次数
cat www . access . log | awk ($ 10200000 $ 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秒的)的以及对应页面发生次数
cat www . access . log | awk ($ NF60 $ 7 ~/。PHP/){ print $ 7 } | sort-n | uniq-c | sort-NR | head-100
15、列出传输时间超过 30 秒的文件
cat www . access . log | awk ($ NF30){ 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 | grepestablisted | WC-l
18、可以使用如下参数查看数据
ps-ef|grephttpd|wc-l
1388
统计httpd进程的数量。即使一个请求也会启动一个进程,这个进程将在Apache服务器中使用。
表示Apache可以处理1388个并发请求,这个值可以由Apache根据负载情况自动调整。
netstat-nat|grep-i80|wc-l
4341
Netstat -an打印系统当前的网络链接状态,grep-I“80”用于提取与80端口相关的连接,wc -l统计连接数。
返回的最终数字是所有80个端口的当前请求总数。
netstat-na | grepestablisted | WC-l
376
Netstat -an将打印系统当前的网络链接状态,grep ESTABLISHED将提取已建立连接的信息。然后wc -l统计
最终返回的数字是目前所有80个端口建立的连接总数。
netstat-NAT | | grepestablisted | 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 n ,a,S[a]);I}printf(%-20s%sn , TOTAL_IP ,I);for(ains)printf(%-20s%sn ,a,s[a]);printf(%-20s%sn , TOTAL_LINK ,N);}
20、其他的收集
分析日志文件下 2012-05-04 访问页面最高 的前20个 URL 并排序
地下通道。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。{ print $ 1 } | sort | uniq-c | sort-NR
获取访问最高的10个IP地址 同时也可以按时间来查询
猫线哇-访问。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=Memberm=Publica=sendValidCode”的IP倒序排列
卡特彼勒log _ file | egrep 15/Aug/2015 | 16/Aug/2015 | awk { if($ 7==/index。PHP?g=member m=Publica=send valid code )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($NF60$7~/ .PHP/){ print $ 7 } | sort-n | uniq-c | sort-NR | head-100
统计网站流量(G)
地下通道。log | awk " { sum=$ 10 } END { printsum/1024/1024/1024 } "
统计404的连接
awk ($ 9 ~/404/)访问。log | awk“{ print $ 9,$ 7 }”|排序
统计http status
地下通道。log | awk“{ counts[$(9)]=1 };END{for(codeincounts)printcode,counts[code]}
地下通道。log | awk " { print $ 9 } " | sort | uniq-c | sort-rn
每秒并发
watch awk { if($ 9 ~/200 | 30 | 404/)COUNT[$ 4]} END { for(ain COUNT)printa,COUNT[a]} log _ file | sort-k2-NR | head-n10
带宽统计
cata缓存。log | awk " { if($ 7 ~/GET/)count } END { print client _ request= count } "
找出某天访问次数最多的10个IP
cat/tmp/access。log | grep 20/Mar/2011 | awk { print $ 3 } | sort | uniq-c | sort-NR | head
当天ip连接数最高的ip都在干些什么
地下通道。日志| 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(iin num)printi,num[I]} log _ file | sort-n-k3-r | head-10
找出访问次数最多的几个分钟
awk“{ print $ 1 }”访问。log | grep 20/Mar/2011 | cut-C14-18 | sort | uniq-c | sort-NR | head
取5分钟日志
if [ $DATE_MINUTE!=$ DATE _ END _ MINUTE];然后#则判断开始时间戳与结束时间戳是否相等
START _ LINE=sed-n /$ DATE _ MINUTE/= $ APACHE _ LOG | head-n1 #如果不相等,则取出开始时间戳的行号,与结束时间戳的行号
查看tcp的链接状态
netstat-NAT | awk " { print $ 6 } " | sort | uniq-c | sort-rn
netstat-n|awk/^tcp/{ s[$ nf]};END{for(ainS)printa,S[a]}
netstat-n|awk/^tcp/{州[$ nf]};END{for(keyinstate)printkey, t ,state[key]}
netstat-n|awk/^tcp/{ arr[$ nf]};END{for(kinarr)printk, 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(ainS)printS[a],a}|sort-n
netstat-ant | awk /:80/{ split $ 5,ip,:);s[IP[1]]} END { for(ainS)printS[a],a}|sort-rn|head-n10
awk begin { printf( http _ code tcount _ num n )} { COUNT[$ 10]} END { for(ain COUNT)print fa t t COUNT[a] n }
查找请求数前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(iinA)printA[I],i}|sort-rn|head-n20
用tcpdump嗅探80端口的访问看看谁最高
tcpdump-ieth 0-tnndstport 80-c1000 | awk-F 。{打印$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 | grep 80 | awk " { print $ 7 } " | cut-d/-f1
查看了连接数和当前的连接数
netstat-ant|grep$ip:80|wc-l
netstat-ant | grep $ IP:80 | GRE pest | 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(a in s)print a,S[a]}#通过看可以一直监控
LAST_ACK 5 #关闭一个传输控制协议(传输控制协议)连接需要从两个方向上分别进行关闭,双方都是通过发送鳍状物来表示单方向数据的关闭,当通信双方发送了最后一个鳍状物的时候,发送方此时处于LAST_ACK状态,当发送方收到对方的确认(鳍的确认字符(确认字符)确认)后才真正关闭整个传输控制协议(传输控制协议)连接;
SYN_RECV 30 #表示正在等待处理的请求数;
成立于1597 #表示正常数据传输状态;
FIN_WAIT1 51 #表示服务器主动请求关闭tcp连接;
FIN_WAIT2 504 #表示客户端断开连接;
TIME_WAIT 1057 #表示已处理并等待超时结束的请求数;
关于常见Shell服务器日志分析命令的总结,本文到此结束。有关Shell服务器日志分析命令的更多详细信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!