发布于2026-08-21 阅读(0)
扫一扫,手机访问
你知道吗?ss可是比netstat更快更高效的socket统计工具哦!它能直接从内核tcp_diag模块获取信息,还支持TCP/UDP/Unix域套接字等多种协议呢。它有不少常用选项,比如-t(用于TCP)、-u(用于UDP)、-l(显示监听状态)、-n(以数字格式显示)、-p(显示进程信息)、-a(显示全部状态)。在这里,强烈推荐大家用sudo ss -tunlp来替代netstat -tunlp哦。

普通用户执行 netstat -anp 时,PID/Program name 列通常显示为 -,因为进程归属信息需要读取 /proc 下的文件,而这些目录默认只对 root 或同组用户可读。不加权限就看不到谁在用哪个端口。
sudo netstat -anp 才能显示真实进程名和 PID-n 避免 DNS 反向解析拖慢输出,也防止因 hosts 或 DNS 异常导致字段错位-a 包含监听中(LISTEN)和已建立(ESTABLISHED)等所有状态,漏掉 -a 就看不到服务端口Local Address 和 Foreign Address 的冒号后是端口号,IPv6 地址带方括号,注意区分netstat 已被很多新系统标记为“deprecated”,底层依赖过时的 procfs 接口;ss 直接从内核 socket API 获取数据,响应快、开销低,尤其在连接数多时优势明显。
ss -tunlp 等价于 netstat -tunlp:-t TCP、-u UDP、-n 数字地址、-l 监听、-p 进程信息iproute2 包默认自带 ss,CentOS 8+/Ubuntu 18.04+ 均预装State 放在最前,Recv-Q/Send-Q 后直接跟地址对,没有冗余空行Permission denied,同样要加 sudo,否则 -p 无效用 grep :8080 看 8080 端口容易误匹配 —— 比如 192.168.1.100:80801 也会被拉进来。更稳妥的方式是锚定字段边界或用正则。
sudo ss -tunlp | grep ':8080b'(b 表示单词边界)sudo ss -tunp | awk '$5 ~ /:443$/ {print}'($5 是 Foreign Address 字段)sudo ss -tunp | grep '12345,'(PID 后跟逗号,避免匹配到其他数字)ss 输出中进程信息在最后一列,格式为 users:(("nginx",pid=1234,fd=6)),不是简单空格分隔看到 TIME_WAIT 或 CLOSE_WAITSYN_RECV 太多可能是 SYN Flood,FIN_WAIT2 堆积说明对方没发 FIN。
ESTABLISHED:双向通信正常,最常见健康态LISTEN:服务端等待接入,对应 -l 参数筛选结果TIME_WAIT:主动关闭方等待 2MSL,短时间大量出现属正常;持续数万需检查应用是否频繁短连接CLOSE_WAIT:对端已关闭,本端还没调 close(),通常是程序未正确处理 EOF,泄漏 socketSYN_SENT:本端发了 SYN 等 ACK,若长期卡住,说明网络不通或目标没回包netstat -anp 全量输出 —— 先想清楚你要什么:是找谁占了 3306?还是看 MySQL 连了多少客户端?目标明确再组合参数,不然满屏滚动反而耽误事。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9