linux中 server网络监控利器ss的例子

以下就给大家介绍利用ss的一些常用语法去检查本地网络连接状态.
1. 列出所有连接(tcp, udp, unix socket)
$ ss | less
Netid  State      Recv-Q Send-Q   Local Address: Port       Peer Address: Port  
u_str  ESTAB      0      0                    * 15545                 * 15544 
u_str  ESTAB      0      0                    * 12240                 * 12241 
u_str  ESTAB      0      0      @/tmp/dbus-2hQdRvvg49 12726                 * 12159 
u_str  ESTAB      0      0                    * 11808                 * 11256 
u_str  ESTAB      0      0                    * 15204                 * 15205 
.....
2. 分别过滤出tcp, udp, unix连接
1). tcp连接
$ ss -t
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port  
ESTAB      0      0           192.168.1.2:43839     108.160.162.37:http   
ESTAB      0      0           192.168.1.2:43622     199.59.149.201:https  
ESTAB      0      0           192.168.1.2:33141      83.170.73.249:ircd   
ESTAB      0      0           192.168.1.2:54028     74.125.135.125:xmpp-client
默认 -t 用来显示"establish"或者"connected", 如果要显示"Listening"状态的信息需使用 -at 参数
2). udp连接
$ ss -ua
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port  
UNCONN     0      0           192.168.1.2:48268                  *:*      
UNCONN     0      0           192.168.1.2:56575                  *:*      
UNCONN     0      0                     *:40309                  *:*      
UNCONN     0      0           192.168.1.2:56879                  *:*      
UNCONN     0      0                     *:49014                  *:*      
UNCONN     0      0           192.168.1.2:53124                  *:*      
UNCONN     0      0             127.0.1.1:domain                 *:*
3). unix连接
$ ss -x
Netid State      Recv-Q Send-Q          Local Address:Port              Peer Address:Port  
u_str ESTAB      0      0                           * 10415                        * 0     
u_str ESTAB      0      0                           * 10416                        * 0     
u_str ESTAB      0      0                           * 10420                        * 0 
...
3. 不解析域名连接
$ ss -nt
State      Recv-Q Send-Q      Local Address:Port        Peer Address:Port
ESTAB      0      0             192.168.1.2:43839     108.160.162.37:80   
ESTAB      0      0             192.168.1.2:51350      74.125.200.84:443  
ESTAB      0      0             192.168.1.2:33141      83.170.73.249:6667 
ESTAB      0      0             192.168.1.2:54028     74.125.135.125:5222 
ESTAB      0      0             192.168.1.2:48156      66.196.120.44:5050
4. 显示"Listening" tcp socket 非主机名连接
$ ss -ltn
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port
LISTEN     0      5                 127.0.1.1:53                       *:*    
LISTEN     0      128               127.0.0.1:631                      *:*    
LISTEN     0      128                     ::1:631                     :::*
若要显示utp连接则将t修改成u
5. 显示进程name和id
$ ss -ltp
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port  
LISTEN     0      100           127.0.0.1:smtp                   *:*      
LISTEN     0      128           127.0.0.1:9050                   *:*      
LISTEN     0      128                   *:90                     *:*      
LISTEN     0      128                   *:db-lsp                 *:*        users:(("dropbox",3566,32))
LISTEN     0      5             127.0.0.1:6600                   *:*      
LISTEN     0      128           127.0.0.1:9000                   *:*        users:(("php5-fpm",1620,0),("php5-fpm",1619,0))
6. 获取统计信息
$ ss -s
Total: 526 (kernel 0)
TCP:   10 (estab 7, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*   0         -         -       
RAW   0         0         0       
UDP   15        9         6       
TCP   10        9         1       
INET   25        18        7       
FRAG   0         0         0
7. 获取时间信息
$ ss -tn -o
State      Recv-Q Send-Q      Local Address:Port        Peer Address:Port
ESTAB      0      0             192.168.1.2:43839     108.160.162.37:80   
ESTAB      0      0             192.168.1.2:36335     204.144.140.26:80     timer:(keepalive,26sec,0)
ESTAB      0      0             192.168.1.2:33141      83.170.73.249:6667 
ESTAB      0      0             192.168.1.2:58857      74.121.141.84:80     timer:(keepalive,23sec,0)
ESTAB      0      0             192.168.1.2:42794     173.194.40.239:80     timer:(keepalive,32sec,0)
8. 显示ipv4或者v6的连接
$ ss -tl -f inet
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port  
LISTEN     0      100           127.0.0.1:smtp                   *:*      
LISTEN     0      128           127.0.0.1:9050                   *:*      
LISTEN     0      128                   *:90                     *:*      
LISTEN     0      128                   *:db-lsp                 *:*      
LISTEN     0      5             127.0.0.1:6600                   *:*
$ ss -tl6
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port  
LISTEN     0      100                 ::1:smtp                  :::*      
LISTEN     0      128                  :::12865                 :::*      
LISTEN     0      128                  :::http                  :::*      
LISTEN     0      128                  :::ssh                   :::*      
LISTEN     0      128                 ::1:ipp                   :::*
9. 过滤tcp状态连接.
ss命令的好处在于可以过滤具体条件的连接, 常用的信息可以不需要额外利用管道符配合.
他的语法格式:
# ss [条件]  [状态过滤]  [地址过滤]
1). 显示所有ipv4 tcp connected状态的连接
$ ss -t4 state established
Recv-Q Send-Q         Local Address:Port             Peer Address:Port  
0      0                192.168.1.2:54436          165.193.246.23:https  
0      0                192.168.1.2:43386          173.194.72.125:xmpp-client
0      0                192.168.1.2:38355           199.59.150.46:https  
0      0                192.168.1.2:56198          108.160.162.37:http
2). 显示所有ipv4 tcp time-wait状态的连接
 $ ss -t4 state time-wait
Recv-Q Send-Q         Local Address:Port             Peer Address:Port  
0      0                192.168.1.2:42261           199.59.150.39:https  
0      0                  127.0.0.1:43541               127.0.0.1:2633
以下是其他可用的状态
  1. established
 2. syn-sent
 3. syn-recv
 4. fin-wait-1
 5. fin-wait-2
 6. time-wait
 7. closed
 8. close-wait
 9. last-ack
 10. closing
 11. all - All of the above states
 12. connected - All the states except for listen and closed
 13. synchronized - All the connected states except for syn-sent
 14. bucket - Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.
 15. big - Opposite to bucket state.
10. 通过地址和端口号过滤
除了socket过滤, ss也支持基于地址和端口号的过滤格式.
1). 显示所有源地址和目的地址都为ssh端口的socket连接.
 $ ss -at '( dport = :ssh or sport = :ssh )'
State      Recv-Q Send-Q    Local Address:Port        Peer Address:Port  
LISTEN     0      128                   *:ssh                    *:*      
LISTEN     0      128                  :::ssh                   :::*
2). 目的端口为443或80的所有socket连接.
 $ ss -nt '( dst :443 or dst :80 )'
State      Recv-Q Send-Q      Local Address:Port        Peer Address:Port
ESTAB      0      0             192.168.1.2:58844      199.59.148.82:443  
ESTAB      0      0             192.168.1.2:55320     165.193.246.23:443  
ESTAB      0      0             192.168.1.2:56198     108.160.162.37:80   
ESTAB      0      0             192.168.1.2:54889    192.241.177.148:443  
ESTAB      0      0             192.168.1.2:39893      173.255.230.5:80   
ESTAB      0      0             192.168.1.2:33440      38.127.167.38:443
或者可以这么简写
 $ ss -nt dst :443 or dst :80

更多例子:
 # 通过地址过滤
$ ss -nt dst 74.125.236.178

# 简写子网过滤
$ ss -nt dst 74.125.236.178/16

# 地址和端口过滤
$ ss -nt dst 74.125.236.178:80

# 目的端口过滤
$ ss -nt dport = :80
State      Recv-Q Send-Q      Local Address:Port        Peer Address:Port
ESTAB      0      0             192.168.1.2:56198     108.160.162.37:80   
ESTAB      0      0             192.168.1.2:39893      173.255.230.5:80   
ESTAB      0      0             192.168.1.2:55043     74.125.236.178:80

# 源地址为127.0.0.1且源端口大于5000的TCP连接
$ ss -nt src 127.0.0.1 sport gt :5000

# 本地smtp (port 25) socket连接
$ ss -ntlp sport eq :smtp

# 端口大于25的连接
$ ss -nt sport gt :25

# 目的地址端口小于100的连接
$ ss -nt dport \< :100

# 连接到远程80端口的连接
$ sudo ss -nt state connected dport = :80
总结
以上所有的例子基本上涵盖了所有ss的常用支持,  更多介绍可以使用man查看他的官方文档

时间: 2024-10-12 04:51:14

linux中 server网络监控利器ss的例子的相关文章

iOS中 WGAFN_网络监控 技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载. 需要用到第三方AFNetworking/SVProgressHUD 没有的可以关注我微博私信我.http://weibo.com/hanjunqiang AppDelegate.m [objc] view plain copy #import "AFNetworking.h"   #import "SVProgressHUD.h"   代码实现比较简单: [objc] view plain copy - (BOO

Linux中grep命令的12个实践例子

你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和RHEl/CentOS/Fedora系中的yum). $ sudo apt-get install grep #Debian/Ubuntu $ sudo yum install grep #RH

Linux中管理Memcached的Service脚本的例子

Memcached需要libevent支持,所以需要先检查libevent是否已经安装. 下面是Memcached的安装过程: # tar zvxf memcached-1.4.9.tar.gz # cd memcached-1.4.9 # ./configure --prefix=/usr/local/memcached # make # make install 启动Memcached: # /usr/local/memcached/bin/memcached -d -m 128 -l 12

linux中使用Monit监控进程与系统状态

但现实是残酷的,不少软件本身的稳定性有待提升,机器的硬件资源提升会触及成本,因此在集群的环境中,具备冗余,使得执行简单的服务重启成为了最现实的选择. 这本身不是什么困难的事情,实现的方法有很多,比如在Zabbix或Nagios的报警中增加Action或Commands,或自己写脚本放到计划任务中执行都可以. 但本文要介绍的,是专门来做这种事情的一个工具:Monit. 它最大的特点是配置文件简单易读,同时支持进程和系统状态的监控,并灵活的提供了各种检测的方式,周期,并进行报警和响应(重启服务,执行

linux中shell脚本监控网站80端口与网站是否正常

监控网站80端口 很多时候我们不知道网站80端口是否正常,当然我以前的shell监控网站状态(续)这篇文章也可以监控网站,这里只是给大家提供另外一个思路去监控网站. 脚本内容:  代码如下 复制代码 vi check-80.sh #!/bin/bash nmap -P0 -p80 -sS -vv blog.slogra.com|grep 80 |tail -n1>/tmp/nmap.txt check_80=`cat /tmp/nmap.txt|awk '{print $2}'` if [ &quo

linux中nginx日志分析利器GoAccess使用方法

面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了. 对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快.满足这三点的goaccess确实是居家必备良药. 话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的.你也可以用它来分析apa

linux中利用nagios监控机房温度

曲线救国方式,用交换机的温度来判断空调是否断电. 1.expect交互登录交换机读取温度值  代码如下 复制代码 [root@nagios opt]# cat 123.exp #!/usr/bin/expect -f set user user set passwd password spawn telnet 192.168.0.254 expect "Username:" send -- "$userr" expect "Password:"

linux中nagios check_mk监控juniper的配置

一.开启juniper snmp配置  代码如下 复制代码 #设备标识信息和联系信息 set snmp location 361way_office set snmp contact "admin@361way.com" #配置snmp及允许连接的客户端IP set snmp community public authorization read-only set snmp community public clients 192.168.1.0/24 以在配置完成后可以通过snmpw

linux中利用shell监控网站状态

今天给自己的网站写了shell监控,避免网站挂了我都不知道,这个脚本是分别检查网页状态和网页连接时间,还可以根据自己的需要进行扩展,很强大. 脚本内容: vi check-web.sh  代码如下 复制代码 #!/bin/sh weblist=/root/weblist.txt for list in `cat $weblist|grep -E -v "#|^$"` do httpcode=`curl -o /dev/null -s -w %{http_code} "$lis