本文为转载,原文链接为:http://www.ttlsa.com/linux-command/ss-replace-netstat/
一、命令简介
ss是
Socket Statistics
的缩写。ss命令用于显示socket状态. 他可以显示PACKET sockets
,TCP sockets
,UDP sockets
,DCCP sockets
,RAW sockets
,Unix domain sockets
等等统计. 它比其他工具展示等多tcp和state信息. 它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具.SS命令可以提供如下信息:
- 所有的TCP sockets
- 所有的UDP sockets
- 所有ssh/ftp/ttp/https持久连接
- 所有连接到Xserver的本地进程
- 使用state(例如:connected, synchronized, SYN-RECV, SYN-SENT,TIME-WAIT)、地址、端口过滤
- 所有的state FIN-WAIT-1 tcpsocket连接以及更多
netstat是遍历/proc下面每个PID目录
,ss直接读/proc/net
下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多。
二、使用方法
ss [options] [ FILTER ]
三、命令选项
# ss -h
-h, --help this message
-V, --version output version information
-n, --numeric don't resolve service names
-r, --resolve resolve host names
-a, --all display all sockets
-l, --listening display listening sockets
-o, --options show timer information
-e, --extended show detailed socket information
-m, --memory show socket memory usage
-p, --processes show process using socket
-i, --info show internal TCP information
-s, --summary show socket usage summary
-b, --bpf show bpf filter socket information
-Z, --context display process SELinux security contexts
-z, --contexts display process and socket SELinux security contexts
-N, --net switch to the specified network namespace name
-4, --ipv4 display only IP version 4 sockets
-6, --ipv6 display only IP version 6 sockets
-0, --packet display PACKET sockets
-t, --tcp display only TCP sockets
-u, --udp display only UDP sockets
-d, --dccp display only DCCP sockets
-w, --raw display only RAW sockets
-x, --unix display only Unix domain sockets
-f, --family=FAMILY display sockets of type FAMILY
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink}[,QUERY]
-D, --diag=FILE Dump raw information about TCP sockets to FILE
-F, --filter=FILE read filter information from FILE
FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}
TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing}
connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
bucket := {syn-recv|time-wait}
big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}
四、常用示例
(1)常用ss命令。
# 显示本地所有打开的端口
ss -l
# 显示每个进程具体打开的端口
ss -pl
# 显示所有tcp socket
ss -t -a
# 显示所有udp socket
ss -u -a
# 显示所有已建立的SMTP连接
ss -o state established '( dport = :smtp or sport = :smtp)'
# 显示所有已建立的HTTP连接
ss -o state established '( dport = :http or sport = :http)'
# 找出所有连接x服务器的进程
ss -x src /tmp/.X11-unix/*
# 列出当前socket详细信息:已经连接、关闭,等待的tcp连接。
ss -s
(2)ss使用IP地址筛选。
ss src ADDRESS_PATTERN
# src:表示来源
# ADDRESS_PATTERN:表示地址规则
# 列出来自 120.33.31.1 的连接
ss src 120.33.31.1
# 列出来自 120.33.31.1:80 端口的连接
ss src 120.33.31.1:80
ss src 120.33.31.1:http
(3)ss使用端口筛选。
ss dport OP PORT
# OP:运算符 (<=、 >=、 ==、 !=、 <、 >)
# PORT:端口
# dport:过滤目标端口, sport表示过滤源端口
# 显示所有状态为Established的HTTP连接
ss -o state established '( dport = :http or sport = :http )'