ss是当前Linux查看网络连接的首选工具,因它直接读取内核tcp_diag模块,毫秒级响应、支持双栈、字段对齐严格且适合脚本解析;而netstat需解析/proc/net/tcp等文本文件,万级连接时易卡顿超时、漏IPv6、输出不规整。
是当前 Linux 查看所有网络连接的首选工具,
已被标记为废弃,新系统(如 Ubuntu 22.04+、RHEL 8+)默认不带
,且高并发下它会卡顿甚至超时——这不是“能不能用”的问题,而是“该不该用”的问题。
为什么 ss -tuln 比 netstat -tuln 更可靠
直接读取内核
模块,而
要逐行解析
等多个文件。这意味着:
万级连接时,
响应在毫秒级;
可能卡住数秒甚至因超时返回不全结果
默认输出列紧凑、字段对齐严格,适合脚本解析;
多一列
,且空格不固定,
这类操作容易错位
自动兼容 IPv4/IPv6 双栈;
在某些内核版本中会漏掉 IPv6 的
条目
查所有已建立的 TCP 连接,别用 grep ESTABLISHED
直接运行
是常见错误:它依赖文本匹配,会漏掉 IPv6 连接(含方括号地址),也匹配不到状态字段不在默认输出列末尾的情况。
正确做法是显式使用
关键字:
要包含 IPv6,加
;只看 IPv4,加
;想一次覆盖全部,用
注意大小写:
小写才有效,
不匹配
ss -tulnp 报 Permission denied 怎么办
这不是权限不足,而是
需要读取
下的 socket 描述符,普通用户无权访问其他用户的
子目录。
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
最简解法:加
,即
某些发行版(如 Ubuntu 22.04+)默认禁用
的
能力,此时可改用
先定位端口,再用
补查进程(
输出含完整路径和用户)
容器内执行时,
永远只能看到本容器进程,别指望它显示宿主机上
或
的监听
ss -s 统计里真正该盯住的三个数字
一行输出里藏着服务健康度的关键信号,别只扫
:
—— 总 TCP socket 数,接近 65535 说明端口快耗尽,需检查是否未复用或连接泄漏
—— 真实活跃连接数,若远低于
,说明大量连接卡在
或
,得查应用是否没正确
—— socket 内存占用,持续 >10MB 很可能有连接未释放,导致内存缓慢上涨
这些数字比“有没有 ESTABLISHED”更能反映系统是否在 quietly rotting。
ssnetstatnetstatss -tulntcp_diagnetstat -tuln/proc/net/tcpss -tulnnetstat -tulnssnetstatProtoawk '{print $7}'ss -tulnnetstat -tulnLISTENss -tn | grep ESTABLISHEDstatess -tn state established-6-4ss -t -a | awk '$1 ~ /^(tcp|tcp6)$/ && $NF ~ /^ESTABLISHED$/{i++} END{print i+0}'establishedESTABLISHEDss -p/proc/[pid]/fd//procsudosudo ss -tulnpss-psudo ss -tulnsudo lsof -i :端口号lsofss -tulnpkube-proxynginxss -stotalTCP: total 12456estab 892totalTIME-WAITCLOSE-WAITclose()memory: 0.50MB