ss简单使用

ss即socket state。

1.常用语句

ss -l 显示所有处于监听的网络接口连接

ss -pl 显示所有处于监听的网络接口连接,及相应的进程名称、进号等

ss -t -a 显示所有tcp socket

ss -a -n  -n表示让端口显示为数字格式,还不是默认的服务名称

ss -u -a 显示所有的UDP Socekt

ss -o state established '( dport = :smtp or sport = :smtp )'   显示所有已建立的SMTP连接

ss -o state established '( dport = :http or sport = :http )'  显示所有已建立的HTTP连接

ss -x src /tmp/.X11-unix/*  找出所有连接X服务器的进程

ss -s 列出当前socket详细信息:

解释:netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多。

time netstat -at

time ss

2.标准格式[6,7]

ss [ OPTIONS ] [ STATE-FILTER ] [ ADDRESS-FILTER ] 

ss state connected

state可以为:established,syn-sent,syn-recv,fin-wait-1,fin-wait-2,time-wait,closed,close-wait,last-ack,listen,closing。

addr可以为:

dst ADDRESS_PATTERN

src ADDRESS_PATTERN

dport RELOP PORT

sport RELOP PORT

ss dst 192.168.0.1:80

ss -4 state closing

ss dst 123.1.2.100:http

ss dport OP PORT

ss sport \< :32000

多个子表达式之间可以组合,当然跟tcpdump一样,可以用or and not来组合。但括号要用转义符号表示。

ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 193.233.7/24

ss -lp src :8088  查看本机8088被那个进程占用(用lsof工具也可以看到,lsof -i :80)

3.示例

#ss  sport = :http

#ss  dport = :http

#ss  dport \> :1024

#ss  sport \> :1024

#ss sport \< :32000

#ss  sport eq :22

#ss  dport != :22

#ss  state connected sport = :http

#ss \( sport = :http or sport = :https \)

#ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24