Linux - awk 文本处理工具六 - 日志关键字筛选

 
Nginx 日志举例
 查看日志多少行 ?
 awk '{print NR}' access.log |tail -n1

  日期时间筛选检测

awk '/Dec  10/ {print $0}' /opt/mongod/log/mongod.log

  具体时间点 日志检测

awk '/Nov  11 16:24:17/ {print $0}' /var/log/secure  

nginx日志统计独立ip的个数

awk '{print $1}' /access.log | sort | uniq | wc -l

查询访问最多的前10个ip

awk '{print $1}' /access.log | sort | uniq -c | sort -nr | head -10

查看某段时间的

grep "2017:0[3-6]" nginx.log |

访问次数最多的IP

netstat -ntu | tail -n +3 | awk '{ print $5}' | cut -d : -f 1 | sort | uniq -c| sort -n -r | head -n 5

tail -n +3 :去掉前两行。
awk '{ print $5}':取数据的低5域(第5列)
cut -d : -f 1 :取IP部分。
sort:对IP部分进行排序。
uniq -c:打印每一重复行出现的次数。(并去掉重复行)
sort -n -r:按照重复行出现的次序倒序排列。
head -n 5:取排在前5位的IP 

shell统计一天 access.log 日志每小时每IP访问次数 

awk -vFS="[:]" '{gsub("-.*","",$1);num[$2" "$1]++}END{for(i in num)print i,num[i]}' logs/access.log

进程显示  ps列出ttlsa的pid,然后依次kill 掉

ps -ef | grep root | awk '{ print $2 }' | sudo xargs kill -9

打印进程号;

ps -ef | grep tomcat | grep -v grep | awk '{print $2}'

打印 tomcat 进程 并删除进程;

ps -ef | grep tomcat | grep -v grep | awk '{print $2}' | sed -e "s/^/kill -9 /g" | sh -

统计每一个IP 访问的连接数

netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -rn

查看 TCP 连接数 

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
SYN_RECV表示正在等待处理的请求数; ESTABLISHED表示正常数据传输状态; TIME_WAIT表示处理完毕,等待超时结束的请求数。

 

排序哪个IP地址连接最多

netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n

netstat -na|grep SYN|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n

  

 

posted @ 2018-04-02 19:51  01234567  阅读(573)  评论(0编辑  收藏  举报