ss是当前Linux查看网络连接的首选工具,netstat已被标记废弃;新系统默认不带netstat,且高并发下ss响应快数倍,因其直接读取内核tcp_diag模块,而netstat解析/proc/net/tcp等文件,导致万级连接时ss秒出结果、netstat可能卡顿数秒甚至超时。

ss 是当前 Linux 查看网络连接的首选工具,netstat 已被标记废弃;新系统默认不带 netstat,且高并发下 ss 响应快数倍。
ss -tuln 和 netstat -tuln 的实际差异
两者都用于列出监听端口,但底层机制不同:ss 直接读取内核 tcp_diag 模块,netstat 则解析 /proc/net/tcp 等文件。这意味着:
-
ss -tuln在万级连接时仍秒出结果;netstat -tuln可能卡顿数秒甚至超时 -
ss默认不显示进程名,加-p必须用sudo(如sudo ss -tulnp);netstat -tulnp同样需 root 权限 -
ss输出列更紧凑,netstat多一列Proto且字段对齐更松散,不利于脚本解析
过滤 ESTABLISHED 连接时的状态语法区别
查活跃客户端连接,关键在状态过滤逻辑:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
-
ss -tn state established——state是关键字,后接状态名(大小写敏感),支持fin-wait-1、time-wait、closing等多种状态 -
netstat -tn | grep ESTABLISHED—— 依赖文本匹配,容易误中ESTABLISHED_TIME或日志片段;且无法区分 IPv4/IPv6 混合输出中的状态位置 - 错误写法:
ss -tn | grep ESTABLISHED会漏掉部分连接,因为ss默认不输出全状态字段,必须显式用state关键字
定位端口占用进程:lsof 与 ss -tulnp 的互补性
当 sudo ss -tulnp | grep :3306 显示 mysql 却不确定是哪个实例时,lsof 更可靠:
-
sudo lsof -i :3306会明确列出 PID、用户、命令全路径(如/usr/sbin/mysqld),而ss只显示括号内简名 -
lsof -iTCP -sTCP:LISTEN能精准锁定 TCP 监听态,避免 UDP 冲突干扰;ss -tuln会把 TCP/UDP 监听混在一起 - 注意:
lsof需单独安装(apt install lsof或yum install lsof),不是所有最小化系统都预装
ss -s 统计摘要里最该盯住的三项
ss -s 一行输出看似简单,但三个数字决定你是否该立刻干预:
-
TCP: total 12456—— 总 TCP socket 数,超过 65535 可能触发端口耗尽 -
estab 892—— 真实活跃连接数,若远低于 total,说明大量连接卡在TIME-WAIT或CLOSE-WAIT -
memory: 0.50MB—— socket 内存占用,若持续 >10MB,可能有连接未正确 close 导致内存泄漏
别只扫一眼 total,estab 和 memory 才是判断服务健康度的关键信号。

















