`
mikixiyou
  • 浏览: 1086561 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:349477
社区版块
存档分类
最新评论

Linux shell工具grep awk cut sort uniq sort 使用小结

阅读更多

Linux 系统中,有很多用于快速处理数据的工具如grep awk cut sort uniq sort,他们非常非常地好用。 如果你熟练掌握他们的使用技巧,他们则可以帮你快速定位问题。

最近碰到一个案例。 一个项目上数据库系统, ORACLE ,运行在 LINUX 上,报进程数满了。 看到这类问题,您不需要去深究什么警告日志,数据库中进程状况啊等等。马上 在操作系统层面上看看有哪些服务器连接到这台数据库服务器上。

(墙内链接: http://mikixiyou.iteye.com/blog/1538828)

这里使用的第一个工具就netstat 。他是系统管理工具,还不能算shell 工具。


通过netstat -ntu ,找出通过tcpudp 连接服务器的IP 地址列表。

[root@webdb4 ~]# 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 数目做一个排序。

第一步,使用greptcp 过滤出来,也可以使用egrep 过滤多个条件

netstat -ntu|grep 'tcp'

netstat -ntu|egrep 'tcp|udp'

 

第二步,使用awk 将第五列单独截出来

netstat -ntu|grep 'tcp'|awk '{print $5}'

操作如下:

[root@webdb4 ~]# 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

 

第七步,使用headtail 取头部几行或尾部几行

取尾部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@webdb4 ~]# 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@webdb4 ~]# 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
0
分享到:
评论
2 楼 mikixiyou 2012-05-24  
是的,多谢提醒。
1 楼 codingstandards 2012-05-24  
引用
第一步,使用grep 将tcp 过滤出来,也可以使用egrep 过滤多个条件

netstat -ntu|grep 'tcp'

netstat -ntu|egrep 'tcp|udp'


把 netstat -ntu 中的 u 去掉,就只输出tcp的了

相关推荐

    Linux学习笔记【博文整理系列】

    Linux笔记——命令:Sort,uniq,join,cut,paste,split Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数 Linux笔记——条件测试test Linux笔记——控制流 Linux笔记——shell补充:参数传递&函数等 Linux...

    linux shell 编程教程

    linux shell编程 教程大全 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 ...

    LINUX与UNIX SHELL编程指南(很全)

    11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 ...

    Linux shell编程指南

    11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 ...

    史上最全的 Linux Shell 文本处理工具集锦.doc

    本文将介绍Linux下使用Shell处理文本时最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和参数都是最常用和最为实用的;对shell脚本使用的原则是命令单行书写,尽量不要超过...

    Linux与unix shell编程指南

    11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 ...

    绝版经典《Linux与UNIX Shell编程指南》

    11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 ...

    shell基础十二篇

    ,[]等)shell基础5:输入/输出(echo,read,cat,管道,tee,重定向等)shell基础8:文本过滤工具(grep) shell基础9:awk 64 shell基础10:sed 94 Shell基础11:文件分类、合并和分割(sort,uniq,join,cut,paste...

    Linux shell脚本 精华中文版

    011_合并与分割_sort_join_uniq_cut_paste_split.pdf 012_tr的用法.pdf 013_登录环境.pdf 014_环境和shell变量.pdf 015_引号.pdf 016_基础shell编程_shell脚本介绍.pdf 017_条件测试_test_expr.pdf 018_控制...

    LINUX与UNIX SHELL编程指南 高清PDF

    11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 ...

    LINUX 与 UNIX SHELL编程指南

    11.1.17 awk 使用 sort 输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统 sort 110 11.3 uniq 用法 111 11.4 join 用法 112 11.5 cut 用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 ...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 ...

    linux与unix shell编程指南

    11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 ...

    LINUX与UNIX SHELL编程指南

    11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 ...

    LINUX与UNIX_Shell编程指南

    11.1.17 awk使用sort输出结果 109 11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste...

    linux与unix shell编程指南.rar

    linux/unix shell编程指南,全面介绍了Linu/unix shell编程的常用知识和技巧,是不可多得的编程宝典。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限...

Global site tag (gtag.js) - Google Analytics