Welcome 微信登录

首页 / 操作系统 / Linux / Linux Shell工具grep awk cut sort uniq sort 使用小结

Linux 系统中,有很多用于快速处理数据的工具如grep awk cut sort uniq sort,他们非常非常地好用。 如果你熟练掌握他们的使用技巧,他们则可以帮你快速定位问题。最近碰到一个案例。 一个项目上数据库系统, Oracle ,运行在 LINUX 上,报进程数满了。 看到这类问题,您不需要去深究什么警告日志,数据库中进程状况啊等等。马上 在操作系统层面上看看有哪些服务器连接到这台数据库服务器上。这里使用的第一个工具就netstat 。他是系统管理工具,还不能算shell 工具。通过netstat -ntu ,找出通过tcp 和udp 连接服务器的IP 地址列表。[root@ www.linuxidc.com ~]# netstat -ntu|more      Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address               Foreign Address             State      tcp        0      0 192.168.15.209:1521         192.168.15.65:37781         ESTABLISHED tcp        0      0 192.168.15.209:1521         192.168.15.65:37783         ESTABLISHED tcp        0      0 192.168.15.209:1521         192.168.15.65:37777         ESTABLISHED tcp        0      0 192.168.15.209:1521         192.168.15.65:37779         ESTABLISHED tcp        0      0 10.100.15.209:49895         10.100.15.207:26069         ESTABLISHED tcp        0      0 10.100.15.209:49898         10.100.15.213:6092          ESTABLISHED tcp        0      0 192.168.15.209:1521         192.168.15.65:37785         ESTABLISHED tcp        0      0 192.168.15.209:1521         192.168.15.181:21869        ESTABLISHED tcp        0      0 192.168.15.209:1521         192.168.15.181:21870        ESTABLISHED tcp        1      0 192.168.15.209:26781        192.168.15.89:1521          CLOSE_WAIT  tcp        0      0 192.168.15.209:10332        192.168.15.211:6200         ESTABLISHED tcp        0      0 192.168.15.209:1521         192.168.15.181:21875        ESTABLISHED tcp        0      0 192.168.15.209:1521         192.168.15.65:37766         ESTABLISHED tcp        0      0 192.168.15.209:1521         192.168.15.181:21874        ESTABLISHED tcp        0      0 192.168.15.209:1521         192.168.15.65:37761         ESTABLISHED  下面略掉,太多了,没法显示全。  这是所有与数据库服务器连接的外部IP 信息列表。  可以看到第五列是所有的外部IP 信息。根据这些信息,找出数目那个IP 是什么?或者根据IP 数目做一个排序。 第一步,使用grep 将tcp 过滤出来,也可以使用egrep 过滤多个条件 netstat -ntu|grep "tcp" netstat -ntu|egrep "tcp|udp"  第二步,使用awk 将第五列单独截出来 netstat -ntu|grep "tcp"|awk "{print $5}" 操作如下: [root@ www.linuxidc.com ~]# netstat -ntu|grep "tcp"|awk "{print $5}"|more 192.168.15.65:37781 192.168.15.61:34281 192.168.15.65:37783 192.168.15.61:34282 192.168.15.65:37777 192.168.15.65:37779 10.100.15.207:26069 192.168.15.61:34275 10.100.15.213:6092  第三步,使用cut 将列信息以":" 为分隔符再分成不同的列, 显示第一个field netstat -ntu|grep "tcp"|awk "{print $5}"|cut -d: -f1  第四步,使用sort 默认字符顺序将字段值排序 netstat -ntu|grep "tcp"|awk "{print $5}"|cut -d: -f1|sort sort 有很多选项,可以man sort 去看。  第五步,使用uniq 将已经排序好的字段计算不同值的数目 netstat -ntu|grep "tcp"|awk "{print $5}"|cut -d: -f1|sort|uniq -c uniq -c 根据相近的值计算和,因此之前需要排序好。  第六步,使用sort -n 数字升序方式再排一下结果 netstat -ntu|grep "tcp"|awk "{print $5}"|cut -d: -f1|sort|uniq -c|sort -n 使用sort -nr ,可以按照数字降序排。 netstat -ntu|grep "tcp"|awk "{print $5}"|cut -d: -f1|sort|uniq -c|sort -nr  第七步,使用head 或tail 取头部几行或尾部几行 取尾部10 行 netstat -ntu|grep "tcp"|awk "{print $5}"|cut -d: -f1|sort|uniq -c|sort -n|tail -10  取头部10 行 netstat -ntu|grep "tcp"|awk "{print $5}"|cut -d: -f1|sort|uniq -c|sort -nr|head -10  [root@ www.linuxidc.com ~]# netstat -ntu|grep "tcp"|awk "{print $5}"|cut -d: -f1|sort|uniq -c|sort -n|tail -10       8 192.168.15.133       8 192.168.15.62      10 192.168.15.181      11 192.168.15.61      12 192.168.15.204      15 192.168.15.63      17 192.168.15.100      18 192.168.15.92      30 192.168.15.65      32 192.168.15.146  [root@ www.linuxidc.com ~]# netstat -ntu|grep "tcp"|awk "{print $5}"|cut -d: -f1|sort|uniq -c|sort -nr|head -10      32 192.168.15.146      30 192.168.15.65      18 192.168.15.92      17 192.168.15.100      15 192.168.15.63      12 192.168.15.204      11 192.168.15.61      10 192.168.15.181       8 192.168.15.62       8 192.168.15.133  这就得到我们要的结果。 这个结果中,我们可以看出各个服务器在数据库服务器上的网络连接数。 根据连接数,发现特别大的,肯定有问题。通常都应用服务端打开连接不关闭,或者出现异常无法关闭。 Linux 查看连接数命令Linux Mint 下安装配置 Oracle JDK 6相关资讯      Linux Shell 
  • Linux基础知识:shell基础命令  (今 10:39)
  • Linux系统监控shell脚本  (04月09日)
  • Linux shell脚本编程  (03月01日)
  • Linux shell数组  (07月26日)
  • Linux Shell实现批量关闭局域网中  (03月10日)
  • Linux系统入门教程:如何知道当前  (11/27/2015 08:36:09)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图