本文爲轉載,原文鏈接爲: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 )'