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