`
bosschen
  • 浏览: 197294 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Linux 统计日志中出现过的IP(或出现次数最多的N个IP)

 
阅读更多

---cat *.log |awk '{print $1}'|sort -n |uniq -c|sort -n

---cat www.qsanquan.com-access.log|grep 42.63.254.252|awk '{print $7}'|sort -n|uniq -c |sort -n

 

 

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk的用法

awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
第一步:运行BEGIN{ commands }语句块中的语句。

第二步:从文件或标准输入(stdin)读取一行。然后运行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行反复这个过程。直到文件所有被读取完成。

第三步:当读至输入流末尾时,运行END{ commands }语句块。

BEGIN语句块在awk開始从输入流中读取行之前被运行,这是一个可选的语句块,比方变量初始化、打印输出表格的表头等语句通常能够写在BEGIN语句块中。

END语句块在awk从输入流中读取全然部的行之后即被运行。比方打印全部行的分析结果这类信息汇总都是在END语句块中完毕,它也是一个可选语句块。

pattern语句块中的通用命令是最重要的部分,它也是可选的。假设没有提供pattern语句块,则默认运行{ print },即打印每个读取到的行。awk读取的每一行都会运行该语句块。

这三个部分缺少任何一部分都可以。

可用awk来统计固定格式日志里的一些数据,如日志中出现过所有不同的IP

awk ‘{i=$1;count[i]++}END{for(i in count)print(i,count[i])}’ /var/log/httpd/access_log
awk对文件进行流处理,每次读取一行。$1就是IP,count[i]++是将IP作为一个数组的下标,并且使得统计这个IP所对应的数组元素自增1.END后面的语句是打印结果,只执行一次。

也可以用来找出访问次数最多的ip。

awk '{a[$1] += 1;} END {for (i in a) printf("%d %s\n", a[i], i);}' 日志文件 | sort -n | tail -n 10 #用tail显示最后10行
首先用awk统计出来一个列表,然后用sort进行排序,最后用tail取最后的10个。

以上参数可以略作修改显示更多的数据,比如将tail加上-n参数等,另外日志格式不同命令也可能需要稍作修改。

 

当前WEB服务器中联接次数最多的ip地址

netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -nr
查看日志中访问次数最多的前10个IP

cat access_log |cut -d ' ' -f 1 | sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 | less
查看日志中出现100次以上的IP

cat access_log |cut -d ' ' -f 1 | sort |uniq -c | awk '{if ($1 > 100) print $0}'|sort -nr | less
查看最近访问量最高的文件

cat access_log | tail -10000 | awk '{print $7}' | sort | uniq -c | sort -nr | less
查看日志中访问超过100次的页面

cat access_log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less
统计某url,一天的访问次数

cat access_log | grep '12/Aug/2009' | grep '/images/index/e1.gif' | wc | awk '{print $1}'
前五天的访问次数最多的网页

cat access_log | awk '{print $7}' | uniq -c | sort -n -r | head -20
从日志里查看该ip在干嘛

cat access_log | grep 218.66.36.119 | awk '{print $1"\t"$7}' | sort | uniq -c | sort -nr | less
列出传输时间超过 30 秒的文件

cat access_log | awk '($NF > 30){print $7}' | sort -n | uniq -c | sort -nr | head -20
列出最最耗时的页面(超过60秒的)

cat access_log | awk '($NF > 60 && $7~/\.php/){print $7}' | sort -n | uniq -c | sort -nr | head -100

分享到:
评论

相关推荐

    提取出某日访问网站次数最多的那K个IP

    标题 "提取出某日访问网站次数最多的那K个IP" 涉及的是数据分析和数据处理方面的技术,主要目标是从海量的日志数据中找出在特定日期内访问网站频率最高的K个IP地址。在这个过程中,我们可以使用多种编程语言和工具来...

    Linux下日志统计举例.pdf

    3. **统计重复行出现次数**:`uniq -c`可以标记重复行及其出现次数。例如,`cat access_log | awk '{print $1}' | sort | uniq -c`。 4. **排序并统计行数**:结合`sort`、`uniq`和`wc -l`,可以统计不同IP的数量。...

    Apache日志分析手册

    5. 分析访问页面:分析访问页面时,可以使用awk命令提取日志中的页面信息,然后用sort和uniq命令来统计访问次数,最终筛选出访问次数最多的页面。 6. 查看进程和端口连接:手册中提到了使用ps和netstat命令来查看...

    Linux日志分析与视频分享资料

    ### Linux日志分析关键知识点详解 #### 一、引言 在现代IT环境中,日志文件扮演着极其重要的角色,特别是在Linux系统下。通过分析这些日志,管理员能够监控系统的健康状况、诊断问题以及防范安全威胁。本文将详细...

    nginx-log-analysis:用于分析 nginx 日志文件的很棒的 linux shell 命令的精选列表

    如统计每个页面的访问次数: ``` awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn ``` 3. **`cut`**:提取指定列。若只关心IP和状态码,可使用: ``` cut -d ' ' -f 1,6 /var/log/...

    Shell+Linux命令实现日志分析

    使用`cut`命令以特定字符(通常是空格或逗号)分隔日志条目,提取IP地址(通常是第一字段),然后使用`uniq -c`统计每个IP出现的次数,并通过`sort -rn`按降序排列,最后使用`head -20`取前20个最多访问的IP。...

    企业日志分析之linux系统history收集展示.docx

    - **登录主机Top5**:显示登录IP最多的前五个主机。 - **各时间段数据总量**:分析不同时间段内收集到的日志数量。 - **每条命令详情**:包括收集时间、主机名、登录IP、登录用户、当前用户和执行的命令。 3. **...

    nginx通过goaccess生成日志统计报告

    GoAccess能够直接读取Nginx的日志文件,通过解析这些日志,生成包括但不限于访问最多的页面、访问者来源、浏览器类型、操作系统、错误页面等统计报告。在本案例中,“生成日志报告命令.bat”文件很可能就是用来调用...

    Linux下apache日志分析与状态查看方法

    使用`awk`命令可以提取日志中的IP地址,`sort`进行排序,`uniq -c`统计每个IP出现的次数,再用`sort -nr`按次数降序排列,最后`head -n 10`获取前10个。例如: ``` awk '{print $1}' access_log | sort | uniq -c...

    goaccess—nginx 日志分析工具

    1. **访问者统计**:展示访问者的总数、唯一IP、地理位置分布、浏览器类型、操作系统等。 2. **最受欢迎的页面**:列出被访问最多的URL,帮助了解哪些内容最受用户欢迎。 3. **错误页面和状态码**:分析404、500等...

    Linux实战型企业运维工程师试题测评 433页

    3. PHP-FPM进程占用高:在Linux系统中,如果NGINX配合PHP-FPM环境运行时PHP-FPM进程占用过高,可能是因为有大量PHP进程正在运行或存在内存泄漏。解决方法包括优化PHP配置、增加PHP-FPM进程数、重启PHP-FPM或检查PHP...

    大厂面试系列二.pdf

    该算法基于一个事实,即如果某个数是数组中出现次数最多的数,那么它出现的次数会超过其他所有数出现次数之和。 找出被修改过的数字问题,如果无法使用额外的内存空间,可以采用异或运算的性质。将所有数组元素与...

    shell脚本定时统计Nginx下access.log的PV并发送给API保存到数据库

    查看日志中访问次数最多的前10个IP cat access.log.1 |cut -d ' ' -f 1 | sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 查看日志中访问次数超过1000次的前10个IP cat access.log.

    基于Linux的信用卡授权程序的设计与实现

    在Linux中,使用`socket()`函数创建套接字,`bind()`函数绑定IP地址和端口,`listen()`函数设置监听状态,允许最多20个连接请求排队等待。当有客户端连接时,`accept()`函数用于接收客户端的连接请求,返回一个新的...

    从文件中提取最活跃的IP地址

    在处理IP地址时,可以利用Perl的正则表达式匹配IP地址,然后使用哈希(hash)数据结构来统计每个IP出现的次数。哈希允许我们以键值对的形式存储数据,便于快速查找和更新计数。 在Linux命令行环境下,我们也可以...

    (完整版)运维面试题(含答案).docx

    使用`awk`命令统计日志中的IP出现次数,然后用`sort`排序,最后`head`取出前10个。 8. Linux启动过程简述: - BIOS启动,加载MBR中的GRUB。 - GRUB引导加载内核和initrd到内存。 - 内核初始化,包括设备探测、...

    Linux命令考试题(范围).doc.doc

    * 统计 apache 访问日志,输出 10 个访问最多的 URL:sort -n -r -k 2 | head -10 /var/log/apache/access.log * 统计网络连接状态数量,并按数量高低输出:netstat -an | sort -r 操作 MySQL * 每分钟统计一次,...

    Linux-服务器巡检报告.docx

    Linux服务器巡检报告是IT运维中的重要环节,其目的是确保服务器稳定、高效地运行,防止潜在问题引发的服务中断。这份报告通常包括多个方面,如硬件检查、操作系统状态、性能监控、安全评估和网络状况等。 首先,...

Global site tag (gtag.js) - Google Analytics