ss 是替代 netstat 的更高效工具,因其性能更高、输出更清晰且功能更强,主流系统已推荐使用。1. 查看所有活动连接:ss -tuln;2. 查看所有 tcp 连接:ss -tn;3. 查看监听端口:ss -ln;4. 查看指定端口连接:ss -tn ‘( dport = :80 or sport = :80 )’;5. 查看已建立连接:ss -tn state established;6. 查看进程信息:ss -tunlp(需 root 权限);7. 查看统计信息:ss -s。高级用法包括组合过滤、watch 实时监控及指定 ip 协议版本,需注意通过 -x、-w 查看 unix 和 raw 套接字,未安装时可通过 iproute2 包部署,ss 可完全取代 netstat 并提升诊断效率。
在现代 linux 系统中,
netstat
命令虽然广为人知,但由于其性能较差且已停止维护,逐渐被更高效、更快速的
ss
(Socket Statistics)命令所取代。如果你需要监控网络连接状态,
ss
是更推荐的工具。以下是
ss
如何替代
netstat
的详细说明和常用用法。
一、为什么用 ss 替代 netstat?
- 性能更高:
ss
直接从内核的
TCP/udp
套接字信息中读取数据(通过
netlink
接口),而
netstat
是通过解析
/proc/net/
下的文件,效率较低。
- 输出更清晰:
ss
的输出更简洁,信息更全面。
- 功能更强大:支持更灵活的过滤和状态筛选。
- 系统默认推荐:主流发行版(如 centos 8+、ubuntu 20.04+)已默认不再安装
netstat
,建议使用
ss
。
二、常见 netstat 命令与 ss 的等效替换
1. 查看所有活动连接(TCP/UDP)
# netstat 方式 netstat -tuln # ss 等效命令 ss -tuln
-
-t
:显示 TCP 连接
-
-u
:显示 UDP 连接
-
-l
:仅显示监听状态(LISTEN)
-
-n
:以数字形式显示端口和 IP(不解析服务名/主机名)
2. 查看所有 TCP 连接(包括 ESTABLISHED)
# netstat netstat -tn # ss ss -tn
3. 查看所有监听端口
# netstat netstat -ln # ss ss -ln
4. 查看某个端口的连接(如 80 端口)
# netstat netstat -an | grep :80 # ss(推荐方式) ss -tn sport = :80 ss -tn dport = :80 # 目标端口为 80 ss -tn '( dport = :80 or sport = :80 )'
使用 sport(源端口)、dport(目标端口)配合 =、!=、 等操作符,支持复杂过滤。
5. 查看 ESTABLISHED(已建立)的连接
# netstat netstat -tn | grep ESTABLISHED # ss ss -tn state established
其他可用状态包括:
-
syn-sent
-
syn-recv
-
fin-wait-1
-
fin-wait-2
-
time-wait
-
closed
-
close-wait
-
last-ack
-
listening
-
closing
6. 查看进程信息(需权限)
# netstat netstat -tunlp # ss ss -tunlp
-
-p
:显示关联的进程(PID/程序名)
- 注意:需要 root 权限才能看到所有进程信息。
7. 查看 TCP 连接统计信息
# netstat netstat -s # ss ss -s
输出各协议的连接统计,如 SYN 溢出、重传等,适合快速诊断网络异常。
三、实用技巧与高级用法
1. 组合过滤(逻辑表达式)
# 查看目标端口是 22 且状态为 ESTABLISHED 的连接 ss -tn 'dport = :22 and state established' # 查看非本地回环的连接 ss -t src != 127.0.0.1
2. 监控连接变化(配合 watch)
watch -n 1 'ss -tn state established'
每秒刷新一次已建立的 TCP 连接,适合排查连接数波动。
3. 查看 IPv4 或 IPv6 连接
ss -4 -tn # 仅 IPv4 ss -6 -tn # 仅 IPv6
四、注意事项
-
ss
默认不显示所有协议(如 RAW、UNIX 套接字),需加
-x
查看 Unix 套接字,
-w
查看 RAW 套接字。
- 某些旧系统可能未安装
iproute2
包(
ss
所属包),可通过以下命令安装:
# Ubuntu/Debian sudo apt install iproute2 # CentOS/RHEL sudo yum install iproute
基本上就这些。
ss
不仅更快,语法也更清晰,配合过滤功能可以精准定位网络问题。日常使用中,完全可以替代
netstat
,建议尽早熟悉。