Linux工具之ss
1、SS命令
(Socket Statistics),获取socket统计信息,显示和netstat类似的内容。显示更详细的TCP连接信息。
命令功能:
ss(Socket Statistics 的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于 netstat输出的内容,
但它能显示更多更详细的 TCP连接状态的信息, 且比 netstat 更快速高效。它使用了 TCP协议栈中 tcp_diag
(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使 得 ss命令快捷高效。在没有 tcp_diag,ss也可以正常运行。
2、命令参数
-h, --help 帮助信息
-V, --version 程序版本信息
-n, --numeric 不解析服务名称
-r, --resolve 解析主机名
-a, --all 显示所有套接字(sockets)
-l, --listening 显示监听状态的套接字(sockets)
-o, --options 显示计时器信息
-e, --extended 显示详细的套接字(sockets)信息
-m, --memory 显示套接字(socket)的内存使用情况
-p, --processes 显示使用套接字(socket)的进程
-i, --info 显示 TCP内部信息
-s, --summary 显示套接字(socket)使用概况
-4, --ipv4 仅显示IPv4的套接字(sockets)
-6, --ipv6 仅显示IPv6的套接字(sockets)
-0, --packet 显示 PACKET 套接字(socket)
-t, --tcp 仅显示 TCP套接字(sockets)
-u, --udp 仅显示 UCP套接字(sockets)
-d, --dccp 仅显示 DCCP套接字(sockets)
-w, --raw 仅显示 RAW套接字(sockets)
-x, --unix 仅显示 Unix套接字(sockets)
-f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件
-F, --filter=FILE 从文件中都去过滤器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
3、使用实例
1 )显示TCP连接
ss -t -a
[root@natasha ~]# ss -t -a
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:44993 *:*
LISTEN 0 128 :::sunrpc :::*
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 128 :::43892 :::*
LISTEN 0 128 :::ssh :::*
LISTEN 0 128 *:ssh *:*
LISTEN 0 128 127.0.0.1:ipp *:*
LISTEN 0 128 ::1:ipp :::*
LISTEN 0 100 ::1:smtp :::*
LISTEN 0 100 127.0.0.1:smtp *:*
ESTAB 0 0 192.168.180.119:ssh 192.168.180.1:4932
2 )显示Sockets摘要
ss -s
[root@natasha ~]# ss -s
Total: 171 (kernel 188)
TCP: 11 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 6
Transport Total IP IPv6
* 188 - -
RAW 0 0 0
UDP 8 5 3
TCP 11 6 5
INET 19 11 8
FRAG 0 0 0
3 ) 列出所有打开的网络连接端口
ss -l
[root@natasha ~]# ss -l
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:44993 *:*
LISTEN 0 128 :::sunrpc :::*
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 128 :::43892 :::*
LISTEN 0 128 :::ssh :::*
LISTEN 0 128 *:ssh *:*
LISTEN 0 128 127.0.0.1:ipp *:*
LISTEN 0 128 ::1:ipp :::*
LISTEN 0 100 ::1:smtp :::*
LISTEN 0 100 127.0.0.1:smtp *:*
4 ) 查看进程使用的socket
ss -pl
[root@natasha ~]# ss -pl
5 )找出打开套接字/端口应用程序
ss -lp |grep 44993
[root@natasha ~]# ss -pl |grep 44993
LISTEN 0 128 *:44993 *:* users:(("rpc.statd",1235,9))
6 )显示所有UDP Sockets
ss -u -a
[root@natasha ~]# ss -u -a
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:53190 *:*
UNCONN 0 0 *:968 *:*
UNCONN 0 0 *:987 *:*
UNCONN 0 0 *:sunrpc *:*
UNCONN 0 0 *:ipp *:*
UNCONN 0 0 :::48804 :::*
UNCONN 0 0 :::968 :::*
UNCONN 0 0 :::sunrpc
7 )显示所有状态为established的SMTP连接
命令:
ss -o state established ' ( dport = :smtp or sport = :smtp )'
[root@natasha ~]# ss -o state established '( dport = :smtp or sport = :smtp )'
Recv-Q Send-Q Local Address:Port Peer Address:Port
8)显示所有者状态为established的HTTP连接
ss -o state established '( dport = :http or sport = :http )'
显示已经建立的ssh连接:
9) 匹配远程地址和端口号
ss dst 192.168.119.113:http
ss dat 192.168.119.113:smtp
ss dst 192.168.119.113:443
10)匹配本地地址和端口号
ss src 192.168.119.103:80
ss src 192.168.119.103:smtp
苦难并非乐事,但能者等闲视之,人生本来就是苦中作乐,切莫长吁短叹,虚度年华。