|
Netstat:显示网络状态信息
参 数: -a或--all 显示所有连线中的Socket
-n或--numeric 直接使用IP地址,而不通过域名服务器
-t或--tcp 显示TCP传输协议的连线状况
-u或--udp 显示UDP传输协议的连线状况
-l或--listening 显示监控中的服务器的Socket
-p或--programs 显示正在使用Socket的程序识别码和程序名称
状 态:
LISTEN:侦听来自远方的TCP端口的连接请求;
SYN-SENT:在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED:在收到和发送一个连接请求后等待对方对连接请求的确认;
ESTABLISHED:代表一个打开的连接,我们常用此作为并发连接数;
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2:从远程TCP等待连接中断请求;
CLOSE-WAIT:等待从本地用户发来的连接中断请求;
CLOSING:等待远程TCP对连接中断的确认;
LAST-ACK:等待原来发向远程TCP的连接中断的确认;
TIME-WAIT:等待足够的时间以确保远程TCP连接收到中断请求的确认;
CLOSED:没有任何连接状态;
管道“|”:利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
Grep:在文件中查找并显示包含指定字符串的行,目标是字符串
参 数:-v,反转查找,即输出与查找条件不相符的行。
-i 忽略大小写
-E 多个字符串一起搜寻,就是egrep
说 明:1、grep命令不支持“*”和“?”这些普通意义上的通配符
2、最常用的通配符:
符号“^”表示以什么字符开头,“^word”表示以“word”开头,
符号“$”表示以什么字符结尾,“word$”表示以“word”结尾,
“^$”则表示空行。
符号”.“表示以个非换行符的字符,'gr.p'匹配gr后接一个任意字符,然后是p
符号”[]“表示匹配一个指定范围内的字符,'[Gg]rep'匹配Grep和grep
符号"[^]"表示匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。
Awk:把一行分成数个行进行处理;逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理
参 数:-F 后面跟分隔符,可以加多个,默认为空格 取代FS
格 式:awk -F ‘[分隔符]+’ ‘条件类型{动作}’
动 作:$N变量:它指的是一条记录。如$ awk '{print $0}' test将输出test文件中的所有记录。$1表示第一个域,$n表示第n个域。
Cut:对数据进行剪切,以每一行为一个处理对象
参 数:-c:字符(characters),中文字符和空格都算一个字符
-b:字节(bytes),一个空格算一个字节,一个汉字算三个字节
-f:域(fields),可以理解为一个字段
-d:定义分隔符,默认制表符TAB,d一般情况下根-f一起使用,而不能和-b,-c一起使用
Sort:排序,将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
参 数:-n:以数值来排序
-r:在输出行中按降序输出,默认是升序
-f :忽略大小写的差异,例如 A 与 a 视为编码相同
-b :忽略最前面的空格符部分
Uniq:去除排序过的文件中的重复行,所有的重复行必须是相邻,经常和SORT一起使用
参 数:-c, --count //在每行前加上表示相应行目出现次数的前缀编号
-d, --repeated //只输出重复的行
-D, --all-repeated //只输出重复的行,不过有几行输出几行
-u :只显示唯一的行
实例:查看操作系统上有哪些服务器连接到数据库服务器
[iyunv@localhost ~]# 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
######省略N行######
这是所有与数据库服务器连接的外部IP 信息列表,可以看到第五列是所有的外部IP 信息。根据这些信息,找出数目最多的那个IP 是什么,或者根据IP 数目做一个排序。
[iyunv@localhost ~]# netstat -ntu|grep 'tcp'
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
#也可以使用egrep 过滤多个条件:netstat -ntu|egrep 'tcp|udp'
使用grep 将tcp 过滤出来
[iyunv@localhost ~]# netstat -ntu|grep 'tcp'|awk '{print $5}'
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
#######省略N行...######
使用awk 将第五列链接的IP单独截出来
[iyunv@localhost ~]# netstat -ntu|grep 'tcp'|awk '{print $5}'|cut -d: -f1
192.168.15.65
192.168.15.61
192.168.15.65
192.168.15.61
192.168.15.65
192.168.15.65:
10.100.15.207
192.168.15.61
10.100.15.213
######省略N行######
使用cut 将列信息以":" 为分隔符再分成不同的列, 显示第一个field
1
[iyunv@localhost ~]# netstat -ntu|grep 'tcp'|awk '{print $5}'|cut -d: -f1|sort
使用sort 默认字符顺序将字段值排序,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
1
[iyunv@localhost ~]# netstat -ntu|grep 'tcp'|awk '{print $5}'|cut -d: -f1|sort|uniq -c
使用uniq 将已经排序好的字段计算不同值的数目,uniq -c 根据相近的值计算和,因此之前需要排序好
1
[iyunv@localhost ~]# netstat -ntu|grep 'tcp'|awk '{print $5}'|cut -d: -f1|sort|uniq -c|sort -nr
使用sort -nr ,按照数字降序排序
[iyunv@localhost ~]# 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
这就得到我们要的结果,这个结果中,我们可以看出各个服务器在数据库服务器上的网络连接数。
查看服务器80端口链接数目:
[iyunv@localhost ~]# netstat -nat|grep -i "80"|wc -l
4341
#netstat -an会打印系统当前网络链接状态,而grep -i "80"是用来提取与80端口有关的连接的,wc -l进行连接数统计。最终返回的数字就是当前所有80端口的请求总数。
|
|
|