awk的常用操作场景以及工作中涉及到的一些场景实例
废话不多说,直接上这个实例:
一. 统计apache日志单ip访问请求数排名:
假设apache日志内容access.log内容为:
10.0.0.41 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.43 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.42 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.46 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.42 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.47 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.41 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.47 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.41 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.46 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
一般的做法是:
[root@localhost /]# awk '{print $1}' access.log|sort|uniq -c |sort -rn -k1
10.0.0.41
10.0.0.47
10.0.0.46
10.0.0.42
10.0.0.43
一直在思考 统计IP最多的数的意义何在?
其实,一般单个IP访问数量过百,就值得怀疑了,如果短时间内上万PV访问,说明就不正常了,可以采取相应的处理手段,比如封掉此IP,此法要慎重,否则,可能会有误封问
题,因为,国内的大多数公司还是NAT上网的,出口一个IP。
二. 统计服务器当前单IP连接数最大的IP地址前十
使用netstat -an >>test.log 可以将连接到服务器的一些基本信息重定向到文本文件中,假设内容如下:
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local AddressForeign AddressState
tcp00 124.123.3.79:80219.85.194.23:12004SYN_RECV
tcp00 124.123.3.77:80183.8.74.57:3276SYN_RECV
tcp00 124.123.3.77:80124.236.0.214:63191SYN_RECV
tcp00 124.123.3.77:80121.31.42.148:2338TIME_WAIT
tcp01023 124.123.3.77:8061.178.184.222:62683FIN_WAIT1
tcp00 124.123.3.77:80222.79.242.74:7416TIME_WAIT
tcp04839 124.123.3.77:80121.31.42.148:30638FIN_WAIT1
tcp00 124.123.3.77:80183.10.154.60:37282TIME_WAIT
tcp01 124.123.3.77:8059.49.174.176:26913CLOSING
tcp00 124.123.3.77:80121.31.42.148:1787TIME_WAIT
tcp0174 124.123.3.77:80183.8.74.57:1165CLOSING
使用awk可以统计出ESTABLISHED的一些IP的链接信息:
netstat -an|grep EST|awk-F '[ :]+' '{++S[$6]} END {for (key in S) print "ip:"key"----->",S[key]}'|sort -rn -k2
注意,这里过滤的是已经建立连接的的连接,即状态ESTABLISHED。
两种案例的反思:
对于命令结果中,单IP结尾的数大的,可以认为是不正常的访问。如 121.31.42.148 100 ,表示一个IP有100个连接
一般来说可以怀疑不正常,当网站压力大时,可以考虑限制或封掉这些冒似非法IP,当然,也不排除,企业里多个用户用一个出口IP访问。
壮士扼腕,有时也是必须的,否则,可能网站整体影响更大,甚至瘫痪。有时,各种搜索引擎的爬虫是很疯狂的,通过本例及上面的案例,我们可以再负载IO高时,能够进行临
时应对,当然,这不是长久的方法,优化网络和服务器,部署大规模集群服务器才是较好的解决之道。
我们可以使用awk进行简单地统计线上服务器的一些负载,保证服务器的高效运行。
awk的常用操作场景以及工作中涉及到的一些场景实例的更多相关文章
- Vim常用操作-快速删除括号中内容。
如果你和我一样,希望拥有众多工具,发挥工具最大执行效率,让工作事半功倍的话,我推荐你来使用下 Vim. 刚接触Vim 会觉得它的学习曲线非常陡峭,要记住很多命令,操作太复杂.所以这个系列的分享,不会教 ...
- Idea 常用功能汇总,工作中常用技巧
1.隐藏没用到的文件 比如 IDEA 的项目配置文件(.iml 和.idea),打开 Settings-File Types, 加入要隐藏的文件后缀. 2.常用技巧 2.1 通过Alt+F8查看变量 ...
- Idea 常用功能汇总,工作中常用技巧,移出请说明原因,笔记花了好长时间汇总的
1.隐藏没用到的文件 比如 IDEA 的项目配置文件(.iml 和.idea),打开 Settings-File Types, 加入要隐藏的文件后缀. 2.常用技巧 2.1 通过Alt+F8查看变量 ...
- sybase常用SQL语句,工作中积累的
-------创建sybase设备 语句--------- disk init name="DEV_DB_CLIENT_DAT26", physname="F:\syba ...
- 事务处理操作(COMMIT,ROLLBACK)。复制表。更新操作UPDATE实际工作中一般都会有WHERE子句,否则更新全表会影响系统性能引发死机。
更新操作时两个会话(session)同时操作同一条记录时如果没有事务处理操作(COMMIT,ROLLBACK)则会导致死锁. 复制表:此方法Oracle特有
- Java中Cookie常用操作类(Spring中操作Cookie)
说明:Cookie下用Key取值没有快速的方法,只能便利循环去取. 技巧:置0则cookie会立即删除,设置-1,负值则会在关闭浏览器后删除.切记一定要增加路径:setPath("/&quo ...
- 软件测试工作中涉及的Linux命令整理
Linux文件系统命令 1. 安装火狐浏览器,首先得知道Linux系统是64位的还是32位的 uname -a 2. 将下载的火狐浏览器压缩包移动到指定目录(/user/local)下 sudo mv ...
- [工作中的设计模式]适配器模式adapter
一.模式解析 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 也就是说,如果已经写好了一个接口,但是又来了一种截然不同的接口,如 ...
- [工作中的设计模式]策略模式stategy
一.模式解析 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化. 策略模式的关键点为: 1.多种算法存在 2.算法继承同样的接口 ...
随机推荐
- 处理器拦截器(HandlerInterceptor)详解
处理器拦截器(HandlerInterceptor)详解 编程界的小学生 关注 2017.04.06 15:19* 字数 881 阅读 657评论 0喜欢 4 简介SpringWebMVC的处理器拦截 ...
- 关于JQueryMobile中Slider的一点研究
滑动条 Slider 给input的设置一个新的HTML5属性为type="range",可以给页面添加滑动条组件,可以指定它的value值(当前值 ...
- 【MySql】脚本备份数据库
#!/bin/bash #this is a script of mysql backup #Mysql="mysql" #MysqlDump="mysqldump&qu ...
- 使用HashMap,put()表示放置元素,get()表示取元素
SortedSet可自动为元素排序. SortedSet的实现类是TreeSet:它的作用是字为添加到TreeSet中的元素排序. 与HashSet不同,TreeSet并不需要实现HashCode() ...
- yii2 输出json的方法
public function actionAjax() { if(isset(Yii::$app->request->post('test'))){ $test = "Ajax ...
- layDate/DatePicker日期时间空间
真心不错,果断收藏了. 1.示例与效果 2.更多示例与皮肤 补充说明:My97DatePicker日期时间插件 的使用 1.示例与效果 2. 更多 常用的实例:WdatePicker下载 http:/ ...
- 【Cubian】set up
源: http://mirrors.163.com/.help/debian.html https://lug.ustc.edu.cn/wiki/mirrors/help/debian 下载地址: h ...
- 有用的Python代码片段
我列出的这些有用的Python代码片段,为我节省了大量的时间,并且我希望他们也能为你节省一些时间.大多数的这些片段出自寻找解决方案,查找博客和StackOverflow解决类似问题的答案.下面所有的代 ...
- Eclipse & Visual Studio
VS中的解决方案 vs Eclipse中的workspace Maven包管理 vs Nuget类库管理 build path vs
- 说说M451例程之PWM
/**************************************************************************//** * @file main.c * @ve ...