查日志的基本命令
1. tail
Linux 下查看日志时,使用tail -f可以不断的刷新日志信息。
此时要想暂停刷新,使用ctrl+s暂停终端
要是想继续终端,使用ctrl+q
若想退出tail命令,直接使用ctrl+c
tail -f catalina.out //实时监控文件输出
tail -n 10 test.log // 查看test.log 最后10行日志
tail -n +10 test.log // 查看test.log 从第10行之后的所有日志
tail -f -n 100 catalina.out // 打印当前最后100行,并实时刷新日志(1)
tail -f catalina.out -n 100 // 打印当前最后100行,并实时刷新日志(2)
tail -f -n +100 catalina.out // 打印第100行之后的所有日志,并实时刷新(1)
tail -f catalina.out -n +100 // 打印第100行之后的所有日志,并实时刷新(2)
2. head
head catalina.out -n 100 // 查看前面100行日志记录
3. cat
cat -n test.log | grep "关键词" // 查看到关键词相关日志及行号
cat -n test.log | grep "关键词" | more // 分页显示,按空格键可翻页,按q退出
cat -n test.log | grep "关键词" | less // 分页显示,按空格键可翻页,上下键前后滚动显示, 按q退出
cat -n test.log | tail -n +10000 | head -n 100 // 从10000开始,显示10000行到10099行的日志记录
4. tac(反向列示)
tac 是将 cat 反写过来,所以他的功能就跟 cat 相反,cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
5. sed
sed -n '200,500p' test.log // 从200行开始,显示200行到500行的日志记录
sed -n '/2017-10-11 00:00:00/,/2017-10-11 01:23:23/p' test.log // 查看某一时间段内的日志记录(两个日期必须在日志中存在,不然会是失效)
6. grep
grep "关键词" test.log --color=auto // 查询文件中关键词所在行,并把关键词高亮显示
grep "关键词" -A 10 -B 20 test.log // 查询文件中关键词所在行,及前20行后10行的
grep "关键词" -C 10 test.log // 查询文件中关键词所在行,及前后10行的
tail -f catalina.out | grep "关键词" --color=auto // 实时日志记录中,过滤只显示包含关键词的日志,并将关键词设置高亮
tail -f catalina.out | grep -v "关键词" // 反向查找,查询实时日志中不包含关键词的行的
grep '2019-04-26 14:4[0-5]' catalina.out --color // 模糊匹配,查询2019-04-26 14:40 到 2019-04-26 14:45 的日志高亮显示
grep -E "word1|word2|word3" catalina.out // 满足任意条件(word1、word2和word3之一)将匹配。
grep word1 catalina.out | grep word2 | grep word3 // 必须同时满足三个条件(word1、word2和word3)才匹配。
7、wc -l (word count缩写) 统计文本文件的行数
wc -l “文件名” // 统计xx文件中的行数
grep "关键词" scte.log | wc -l // 统计关键词出现的行数
查看命令实战场景
1. 应用场景一:按行号查看---过滤出关键字附近的日志
(1) cat -n test.log |grep "debug" 得到关键日志的行号
(2) 查看文件的几行到几行
sed -n '10,10000p' /var/lib/mysql/slowquery.log > temp.log 查看10到10000行并输出到temp.log中
2. 应用场景二:根据日期查询日志
(1) sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
特别说明:上面的两个日期必须是日志中打印出来的日志,否则无效;
3.应用场景三:日志内容特别多,打印在屏幕上不方便查看
(1)使用more和less命令,
如: cat -n test.log |grep "debug" |more 这样就分页打印了,通过点击空格键翻页
(2)使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析
如:cat -n test.log |grep "debug" >debug.txt
4.应用场景四:查看某段时间内的关键字日志
(1) sed -n '/2019-04-26 14:40:35/,/2019-04-26 14:45:35/p' catalina.out | grep 'keywords' --color
(2) grep '2019-04-26 14:4[0-5]' catalina.out --color
统计接口次数命令
统计一个接口调用次数
grep "getGoodsInfoList.action" scte.log.20220804 | wc -l
统计每个接口调用次数(降序排列,20是个数) 该命令必须是access文件才有用
awk '{print $7}' localhost_access_log2023-05-20.txt |sort -n|uniq -c|sort -rn|head -20
将统计结果输出到文件(降序排列,20是个数) 该命令必须是access文件才有用
echo | awk '{print $7}' localhost_access_log.2021-11-03.txt |sort -n|uniq -c|sort -rn|head -20 > times.txt