linux awk,sort,grep,sed指令简单应用(ip连接数,排前10的url,某一时间段的ip连接数)
例子
通过日志查看当天ip连接数,过滤重复:
1、查看nginx/apc进程:nginx/httpd
[[email protected] ~]# ps -ef | grep nginx
root 7294 1 0 01:15 ? 00:00:00 nginx: master process /opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
www 7296 7294 0 01:15 ? 00:00:00 nginx: worker process
root 7647 7620 0 01:17 pts/0 00:00:00 grep --color=auto nginx
[[email protected] ~]# ps aux | grep nginx
root 7294 0.0 0.0 20956 940 ? Ss 01:15 0:00 nginx: master process /opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
www 7296 0.0 0.1 21440 1916 ? S 01:15 0:00 nginx: worker process
root 7654 0.0 0.0 112708 988 pts/0 R+ 01:18 0:00 grep --color=auto nginx
[[email protected] ~]# ps aux | grep nginx | grep -v grep | wc -l
2
备注:ps -ef 与ps aux 是两种风格不同,输出略有不同;
wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。-c 统计字节数。-l 统计行数。-m 统计字符数。这个标志不能与 -c 标志一起使用。-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。-L 打印最长行的长度。-help 显示帮助信息--version 显示版本信息
2、当天ip连接数最高的ip都在访问什么
[[email protected] log]# awk '{print $9}' log_2019-03-14.log | sort | uniq -c | sort -nr | head -n 10
150812 http://blog.ci123.com/main.html
125915 http://blog.ci123.com/images/rbgs.gif
67402 http://blog.ci123.com/yixinbaobaodekuaile/categories/340176&pstyle=2&pstyle=0&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=0&pst&pstyle=2&pstyle=0&pstyle=0&pstyle=2&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=2&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&&pstyle=0&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=0&pstyle=2&pstyle=2
61913 http://blog.ci123.com/images/bgs.gif
22552 http://blog.ci123.com/
6614 http://blog.ci123.com/js/validate.js?v=1
5281 http://blog.ci123.com/js/common.js?v=6
3966 http://blog.ci123.com/images/rss_button.gif
3785 http://blog.ci123.com/images/tplogo.gif
3611 http://blog.ci123.com/images/muying.jpg
备注:head (head) 用来显示档案的开头至标准输出中。
如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。如果不指定文件,或者文件为"-",则从标准输入读取数据。
-c, --bytes=[-]K 显示每个文件的前K 字节内容;如果附加"-"参数,则除了每个文件的最后K字节数据外 显示剩余全部内容
-n, --lines=[-]K 显示每个文件的前K 行内容;如果附加"-"参数,则除了每个文件的最后K行外 显示剩余全部内容
-q, --quiet, --silent 不显示包含给定文件名的文件头
-v, --verbose 总是显示包含给定文件名的文件头
--help 显示此帮助信息并退出
--version 显示版本信息并退出
uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
uniq 可检查文本文件中重复出现的行列。
3、当天访问页面排前10的url
[[email protected] log]# cat log_2019-03-14.log | grep "14/Mar/2019" | awk '{print $1}' | uniq -c | sort -nr | head -n 10
59 1***6.96
57 6***.247
50 6***.247
44 6***.247
44 2****186
44 1***3.23
43 6****5.247
43 1***20.243
43 1***34.65
42 1***36.96
4、查看某一时间段的ip连接数
1725 1***9.181
1745 47***8.216
1752 47***.216
1772 4***8.142
1806 39**72.228
2657 12***40.176
3237 11***59.182
[[email protected] log]# grep "2019:0[7-9]" log_2019-03-14.log | awk '{print $1}' | sort | uniq -c | sort -n
5、通过日志查看当天ip连接数,过滤重复:
13429 11**.183
13625 39****2.228
13724 4***8.216
15115 12***.176
26320 11***182
[[email protected] log]# grep "14/Mar/2019" log_2019-03-14.log | awk '{print $1}' | sort | uniq -c | sort -n
特定url 数
[[email protected] log]# grep "http://bl*****/js/common.js?v=6" log_2019-03-14.log | awk '{print $9}' | sort | uniq -c | sort -n
1 http://b****om/js/common.js?v=6&_fp662=0.6628273894087775
5281 http://b****om/js/common.js?v=6
6、查看80端口的tcp连接:
netstat -tan | grep “ESTABLISHED” | grep “:80″ | wc -l
7、用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr
接着从日志里查看该ip在干嘛:
cat access_log | grep 122.102.7.212| awk ‘{print $1″\t”$8}’ | sort | uniq -c | sort -nr | less
sort 对文件内容进行排序
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
-b:忽略每行前面开始的空格字符,空格数量不固定时,该选项几乎是必须要使用的("-n"选项隐含该选项,测试发现都隐含)
-c:检查文件是否已经按照顺序排序,如未排序,会提示从哪一行开始乱序
-C:类似于"-c",只不过不输出任何诊断信息。可以通过退出状态码1判断出文件未排序
-d:只处理英文字母、数字及空格,忽略其他的字符
-f:将小写字母视为大写字母
-h:使用易读性数字(例如:2K、1G)
-i:除了040至176之间的ASCII字符外(八进制0-177),忽略其他的字符(忽略无法打印的字符如退格/换页键/回车)
-k:以哪个区间 (field) 来进行排序
-m:将几个排序好的文件进行合并,只是单纯合并,不做排序
-M:将前面3个字母依照月份的缩写进行排序
-n:依照数值的大小排序
-o<输出文件>:将排序后的结果存入指定的文件
-r:降序
-u:忽略相同行
-t<分隔字符>:指定分隔符,默认的分隔符为空白字符和非空白字符之间的空字符
参考例子 https://www.jianshu.com/p/c4d159a98dd8
linux中grep命令的用法
awk 用法(使用入门)