感谢支持
我们一直在努力

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 


这就得到我们要的结果。


这个结果中,我们可以看出各个服务器在数据库服务器上的网络连接数。


根据连接数,发现特别大的,肯定有问题。通常都应用服务端打开连接不关闭,或者出现异常无法关闭。

赞(0) 打赏
转载请注明出处:服务器评测 » Linux Shell工具grep awk cut sort uniq sort 使用小结
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏