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

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 SHELL编程从初学到精通

    3. 文本处理工具:熟悉sed、awk、grep、cut、sort、uniq等文本处理工具的使用。这些工具是Shell脚本中处理和分析文本数据的利器。 4. 正则表达式:在文本处理中经常会用到正则表达式,它是一种文本模式匹配语言,...

    LinuxShell编程基础教程.pdf

    Linux Shell 编程基础教程 本资源为 Linux Shell 编程基础教程,涵盖了 Linux Shell 编程的基础知识,包括语法基本介绍、变量、环境变量、Shell 命令和流程控制等。 一、语法基本介绍 在 Linux Shell 编程中,...

    Linux-shell脚本全面学习.pdf

    Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...

    Linux shell脚本编写基础

    Linux shell脚本编写基础 Linux系统作为自由软件领域的代表,一直深受众多程序员和系统管理员的青睐。而在Linux环境中,shell脚本编写则是系统管理、自动化运维和开发工作中的一项基本技能。Shell脚本不仅能将复杂...

    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脚本全面学习.doc

    Linux Shell脚本是一种强大的自动化工具,它允许用户编写一系列命令以执行特定任务,尤其是在Linux操作系统中。本篇文章将深入探讨Linux Shell脚本的基础知识,包括语法、变量、环境变量、命令以及流程控制。 首先...

    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与Unix Shell编程指南pdf

    第三部分可能涉及Unix命令的使用,如grep、sed、awk、find、sort和uniq等,这些都是Shell编程中常用的工具。这些命令帮助用户进行文本处理、文件查找、数据过滤和格式化,极大地提高了工作效率。 第四部分可能涵盖...

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

    本文将深入讲解一些最常用的Shell工具,包括find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed和awk,以及如何利用它们来处理文本。 ### 01 find - 文件查找 `find`命令用于在文件系统中查找符合特定条件的...

    shell系列工具,不同版本以及不同工具

    Shell是Linux和Unix操作系统中的命令解释...同时,掌握常见的Shell工具如`grep`、`sed`、`awk`等,以及编写Shell脚本的能力,是提升Linux/Unix系统管理效率的关键。理解并熟练使用这些工具,将极大地丰富你的IT知识库。

    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

    - Linux提供了强大的文本处理工具,如sed、awk、cut、sort、uniq、grep等。 - 这些工具可以帮助用户在脚本中处理和分析文本数据。 8. 进程管理: - Shell可以用来管理运行在系统中的进程,包括启动、结束、调度...

    LinuxShell编程学习

    ### Linux Shell 编程学习知识点概述 #### 一、Shell 的基本概念与作用 - **定义**:在 Linux 系统中,Shell 是用户与操作系统交互的主要方式之一,它不仅是一个命令行解释器,还是一种功能强大的编程语言。 - **...

    linux-shell脚本学习

    Unix命令如echo、ls、wc、cp、mv、rm、grep、cut、cat、file、read、sort、uniq、expr、find、tee、basename、dirname、head、tail、sed、awk等,这些命令大多用于文件操作和文本处理。 管道(|)是一个非常强大的...

Global site tag (gtag.js) - Google Analytics