分析服务器日志是运维工作中的一项重要任务,通过Shell命令可以高效地完成各种日志分析任务,以下是一些常用的Shell命令及其详细解释,帮助你更好地理解和使用这些工具。
查看IP访问情况
1、查看有多少个IP访问
awk '{print $1}' log_file | sort | uniq | wc -l
这条命令用于统计日志文件中有多少个不同的IP地址访问。awk
提取第一列的IP地址,sort
对IP进行排序,uniq
去重,最后用wc -l
统计数量。
2、查看某一个页面被访问的次数
grep "/index.php" log_file | wc -l
该命令用于统计特定页面(如/index.php
)被访问的次数。grep
筛选出包含/index.php
的行,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
这个命令统计每个IP访问的页面数。awk
记录每个IP的访问次数,结果保存到log.txt
中,然后用sort
按访问次数排序。
4、将每个IP访问的页面数进行从小到大排序
awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n
该命令统计每个IP访问的页面数并按从小到大排序。
5、查看某一个IP访问了哪些页面
grep ^111.111.111.111 log_file | awk '{print $1,$7}'
这条命令用于查看特定IP(如111.111.111.111
)访问了哪些页面。grep
筛选出该IP的访问记录,awk
提取第一列和第七列(IP和页面)。
过滤和统计
6、去掉搜索引擎统计的页面
awk '{print $12,$1}' log_file | grep ^"Mozilla" | awk '{print $2}' | sort | uniq | wc -l
这个命令用于去除搜索引擎统计的页面,统计剩余页面的数量。awk
提取第12列和第1列,grep
筛选出包含“Mozilla”的行,再次用awk
提取第二列,最后用sort
、uniq
和wc -l
统计数量。
7、查看特定时间段内的IP访问量
awk '{print $4,$1}' log_file | grep 16/Aug/2015:14 | awk '{print $2}' | sort | uniq | wc -l
该命令用于统计特定时间段(如2015年8月16日14时)内有多少IP访问。awk
提取第四列和第一列,grep
筛选出指定时间的记录,再用awk
提取IP地址,最后用sort
、uniq
和wc -l
统计数量。
8、查看访问前十个IP地址
awk '{print $1}' access_log | sort | uniq -c | sort -nr | head -10
这条命令统计访问量最高的前十个IP地址。awk
提取第一列的IP地址,sort
排序,uniq -c
分组统计并把统计数放在最前面,最后用sort -nr
按数量倒序排列并取前十个。
页面和文件统计
9、访问次数最多的10个文件或页面
awk '{print $11}' log_file | sort | uniq -c | sort -nr | head -10
该命令用于统计访问次数最多的前十个文件或页面。awk
提取第11列的页面信息,sort
排序,uniq -c
分组统计并把统计数放在最前面,最后用sort -nr
按数量倒序排列并取前十。
10、列出传输大小最大的几个文件
awk '($7~/.php/){print $10 " " $1 " " $4 " " $7}' access.log | sort -nr | head -100
这条命令列出传输大小最大的前100个文件。awk
筛选出包含“.php”的记录,并打印第10列、第1列、第4列和第7列的信息,最后用sort -nr
按大小倒序排列并取前100。
11、列出输出大于200000byte(约200kb)的页面以及对应页面发生次数
awk '($10 > 200000 && $7~/.php/){print $7}' access.log | sort -n | uniq -c | sort -nr | head -100
该命令列出输出大于200KB的页面及发生次数。awk
筛选出输出大于200KB且包含“.php”的记录,并打印第7列的信息,最后用sort -n
排序,uniq -c
分组统计并把统计数放在最前面,再用sort -nr
按数量倒序排列并取前100。
性能和连接统计
12、列出到客户端最耗时的页面
awk '($7~/.php/){print $NF " " $1 " " $4 " " $7}' access.log | sort -nr | head -100
这条命令列出到客户端最耗时的前100个页面。awk
筛选出包含“.php”的记录,并打印最后一列、第1列、第4列和第7列的信息,最后用sort -nr
按时间倒序排列并取前100。
13、列出最耗时的页面(超过60秒的)及对应页面发生次数
awk '($NF > 60 && $7~/.php/){print $7}' access.log | sort -n | uniq -c | sort -nr | head -100
该命令列出耗时超过60秒的页面及发生次数。awk
筛选出耗时超过60秒且包含“.php”的记录,并打印第7列的信息,最后用sort -n
排序,uniq -c
分组统计并把统计数放在最前面,再用sort -nr
按数量倒序排列并取前100。
14、列出传输时间超过30秒的文件
awk '($NF > 30){print $7}' access.log | sort -n | uniq -c | sort -nr | head -20
这条命令列出传输时间超过30秒的文件及发生次数。awk
筛选出传输时间超过30秒的记录,并打印第7列的信息,最后用sort -n
排序,uniq -c
分组统计并把统计数放在最前面,再用sort -nr
按数量倒序排列并取前20。
并发和进程统计
15、列出当前服务器每一进程运行的数量,倒序排列
ps -ef | awk -F ' ' '{print $8 " " $9}' | sort | uniq -c | sort -nr | head -20
该命令列出当前服务器每一进程运行的数量,并按数量倒序排列。ps -ef
获取所有进程信息,awk
提取第8列和第9列的信息,sort
排序,uniq -c
分组统计并把统计数放在最前面,最后用sort -nr
按数量倒序排列并取前20。
相关问题与解答栏目
问题1:如何查看Apache当前并发访问数?
回答:可以使用以下命令查看Apache当前并发访问数:
netstat -an | grep ESTABLISHED | wc -l
或者:
ps -ef | grep httpd | wc -l
这两个命令分别通过检查网络连接状态和httpd进程数来统计当前的并发访问数。
问题2:如何找出访问次数最多的几个分钟?
回答:可以通过以下命令找出访问次数最多的几个分钟:
cat access.log | cut -d '[' -f 2 | cut -d ']' -f 1 | awk '{print $1,$2}' | sort | uniq -c | sort -nr | head -10
这个命令从日志中提取时间戳,并统计每个时间点的访问次数,最后按次数倒序排列并取前十个。
以上就是关于“分析服务器日志命令集锦”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/683756.html