有时我们需要分析我们的网站服务器日志,以查看网站的访问量。让我们看看有没有人故意破坏!所以收集整理一些服务器日志分析命令,可以尝试一下。
:
目录
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.php'log_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-i'80'|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%s\n ',' TOTAL_IP ',I);for(ains)printf('%-20s%s\n ',a,s[a]);printf('%-20s%s\n ',' 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服务器日志分析命令的更多详细信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。