日志分析常用命令

下面这3个命令是非常好用的日志分析命令,以apache的日志文件access_log为例

1访问次数最多的IP TOP10

当网络流量突然持续异常时,很有可能是有恶意访问,最快的解决方式就是找出访问量最多的几个ip,暂时禁止其访问,然后再仔细观察

# cat access_log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10

2被访问次数最多的URL TOP10

了解哪些Url资源的访问量最大,可以帮助我们有针对性的进行优化

# cat access_log | cut -f7 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10

3被请求资源中大小最大的 TOP10

文件大小太大的话会严重影响访问速度,有必要找出大文件进行分析

# cat access_log | sort -k 10 -n -r | head -10

命令解释

这几个命令都是使用了管道“|”把多个命令进行连接,上一个命令的结果交给下一个命令来处理
cat
显示文件内容
cut
是一个选取命令,就是将数据以行为单位进行分析,取出我们想要的
-d : 自定义分隔符,默认为制表符
-f : 与-d一起使用,指定显示哪列
第一个命令中的:cut -f1 -d " "
含义:以空格进行分割,显示结果中的第一列
sort
将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
没有参数时就是整行排序
-t : 分隔符,默认是用 [tab] 键来分隔
-k : 选择以哪列进行排序
-n : 使用数字格式进行排序,默认是以文字型态来排序的
-r : 反向排序
uniq
首先比较相邻的行,然后除去第二行和该行的后续副本,重复的行一定要相邻,所以通常与 sort 联合使用,先用 sort 进行排序,然后使用 uniq 去重
-c : 在输出行前面加上每行出现的次数
head
显示结果中头部区域
-10 : 显示头部的10行

综合解释

日志文件的内容示例
184.195.232.39 - - [28/Dec/2015:22:31:48 +0800] "GET /ui-nav.js HTTP/1.1" 304 -
184.195.232.39 - - [28/Dec/2015:22:31:48 +0800] "GET /ui-toggle.js HTTP/1.1" 304 -
184.195.232.38 - - [28/Dec/2015:22:31:48 +0800] "GET /ui-toggle.js HTTP/1.1" 304 -
以第一个命令(查看访问量最大的前10个IP)为例
# cat access_log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10
cat access_log
先读取 access_log 的内容
cut -f1 -d " "
然后对每行以空格进行分割,只显示第一列(日志的第一列为IP)
输出的结果为:
184.195.232.39
184.195.232.39
184.195.232.38
sort
接下来对IP进行升序排序
输出的结果为:

184.195.232.38
184.195.232.39
184.195.232.39
uniq -c
删除重复的IP,删除的同时记录下相同的IP数量,显示到IP的前面
输出的结果为:
1 184.195.232.38
2 184.195.232.39
sort -k 1 -n -r
对第一列以数字格式倒序排序
输出的结果为:
2 184.195.232.39
1 184.195.232.38
head -10
只显示头10条

时间: 2024-10-13 23:27:09

日志分析常用命令的相关文章

Linux日志分析常用命令

1.查看文件内容 cat -n 显示行号 2.分页显示 more Enter 显示下一行 空格 显示下一页 F 显示下一屏 B 显示上一屏 less /get 查询"get"字符串并高亮显示 3.显示文件尾 tail -f 不退出持续显示 -n 显示文件最后n行 4.显示头文件 head -n 显示文件开始n行 5.内容排序 sort -n 按照数字排序 -r 按照逆序排序 -k 表示排序列 -t 指定分隔符 6.字符统计 wc -l 统计文件中行数 -c 统计文件字节数 -L 查看最

Linux日志分析常用命令汇总

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 (a in S) print a,S[a]}' log_file 4.将每个IP访问的页面数进行从小到大排序: awk '{++S[$1]} END {for (a in S) pri

Nginx Access Log日志统计分析常用命令

Nginx Access Log日志统计分析常用命令 Nginx Access Log日志统计分析常用命令 IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的IP访问量(4-5点) grep "07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l 查看访问最频繁的前100

转 Nginx Access Log日志统计分析常用命令

Nginx Access Log日志统计分析常用命令Nginx Access Log日志统计分析常用命令IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的IP访问量(4-5点) grep "07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l 查看某个时间点的IP访问量(

日志分析常用指令简单介绍

大型分布式网站架构设计与实践的第四章的简单回顾 日志分析常用的指令: 查看文件的内容:cat,(适合日志文件比较大)cat –n install.log (-n表示显示行号) 分页显示文件:more,(cat缺少交互,只能用来查看,more可以更好的用来分页显示文件,Enter显示下一行,空格键显示下一页,按F键显示下一屏,B返回上一屏内容)  less是more更强大的交互工具 显示文件尾:tail,    tail  -n install.log (-n表示显示最后的行数) (-f 表示ta

Linux任务处理及日志查看常用命令

任务处理命令: (1) CTRL+Z挂起进程并放入后台(2) jobs 显示当前暂停的进程(3) bg %N 使第N个任务在后台运行(%前有空格)(4) fg %N 使第N个任务在前台运行默认bg,fg不带%N时表示对最后一个进程操作! 日志查看命令 (1)tail的使用tail -f app.log命令格式;tail[必要参数][选择参数][文件]2. 命令功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理.常用查看日志文件.命令参数:-f 循环读取-q 不显示处理信息-v 显

linux 日志查询常用命令

cat tail -f 日 志 文 件 说    明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler 与UUCP和news设备相关的日志信息 /var/log/boot.log 守护进程启动和停止相关的日志消息 系统: # uname -a

linux系统中查看系统、资源、日志等常用命令--转载

转载于:http://mushme.iteye.com/blog/1001478. cat tail -f 日 志 文 件 说    明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler 与UUCP和news设备相关的日志信息 /var/lo

linux日志查看常用命令

less pafa.log :查看pafa日志 grep  XX pafa.log:关键字查找 grep XX pafa.log|grep XX:多个关键字查找 grep -X 100 pafa.log -A -B -C 后面都跟阿拉伯数字-A是显示匹配后和它后面的n行.-B是显示匹配行和它前面的n行.-C是匹配行和它前后各n行. tail -f pafa.log|grep XX:实时日志关键字查找 ps -ef|grep java :查看java进程 n:重复前一个搜索(与 / 或 ? 有关)