如何高效分析服务器日志?命令集锦大揭秘!

小贝
预计阅读时长 13 分钟
位置: 首页 小红书 正文

分析服务器日志是运维工作中的一项重要任务,通过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提取第二列,最后用sortuniqwc -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地址,最后用sortuniqwc -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

这个命令从日志中提取时间戳,并统计每个时间点的访问次数,最后按次数倒序排列并取前十个。

以上就是关于“分析服务器日志命令集锦”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

-- 展开阅读全文 --
头像
如何实现分组循环的存储过程?
« 上一篇 2024-11-28
分段存储管理是如何实现的?
下一篇 » 2024-11-28
取消
微信二维码
支付宝二维码

发表评论

暂无评论,1人围观

头像 陶勇 说道:
2024-07-26 · Google Chrome 100.0.4896.58 Android 11

从零剪辑小白到短视频运营达人,这条路虽然曲折,但每一帧的进步都值得点赞🌟!#短视频剪辑 #运营之路 #梦想起航

目录[+]