欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux awk,sort,grep,sed指令简单应用(ip连接数,排前10的url,某一时间段的ip连接数)

程序员文章站 2022-03-11 12:04:35
...

例子

通过日志查看当天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 显示版本信息

wc 文档

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 可检查文本文件中重复出现的行列。

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 用法(使用入门)

 

sed命令详解