Linux ss命令查看网络连接状态方法
在高并发场景下,排查 Linux 网络连接状态,ss 命令是少数能稳定扛住压力、实时输出准确结果的工具。以 5 万连接进行测试:netstat 需要 15 秒才能完成,而 ss 仅需 0.3 秒——它直接读取内核 socket 子系统数据,无需依赖 /proc/net 解析,因此数据更实时准确。同样,ss -tuln 这条命令必须同时带 -t(TCP)、-u(UDP)、-l(监听)、-n(数字格式),缺一个都会引出问题:漏掉 -t 或 -u 就看不到对应协议的监听端口;漏掉 -l 只能看到已建立连接;漏掉 -n 则可能因 DNS 解析阻塞而长时间无响应。查看已建立连接时,ss -tun 默认包含所有非监听状态(如 CLOSE_WAIT、TIME_WAIT),而 ss -tn state established 只筛选真正在通信的 ESTABLISHED 连接。加 -p 需要 sudo 权限才能显示其他用户的进程信息,输出形如 users:(("nginx",pid=1234,fd=6))。ss -s 提供全局连接健康度统计:estab 是活跃连接数,time-wait 后面的斜杠值非零说明哈希桶溢出、内核压力大,CLOSE-WAIT 多通常表示本地方应用没调 close()。状态过滤与语法严格耦合——比如 state listen 只对 -l 有效,dport/sport 过滤必须加引号和冒号,IPv6 地址含方括号需要特殊处理。

简单来说,ss 命令不仅仅是“能看就行”的替代品,而是高并发场景下查询 Linux 网络连接状态的可靠选择——作为 netstat 替代品,在 5 万连接负载下,netstat 需要 15 秒,而 ss 仅需 0.3 秒,并且直接从内核 socket 子系统读取数据,不依赖 /proc/net 解析,确保结果准确可靠。
Linux 查看端口监听:为什么 ss -tuln 必须带这四个字母
漏掉任意一个都会导致关键信息丢失或命令执行变慢:
-t和-u要一起用,否则无法查看 UDP 监听端口(比如 DNS、NTP);-l是“listening”的缩写,不加它就只显示已建立的连接,无法查看正在等待连接的端口;-n强制数字格式,防止 DNS 解析阻塞——尤其当/etc/hosts有异常或网络不通时,ss -tul可能导致命令挂起超过 10 秒;- 如果只关心 IPv4,末尾补
-4(如sudo ss -tulnp -4),否则双栈环境下 IPv6 地址(如[::]:22)会混合在结果中,增加排查难度。
排查已建立连接:ss -tun 和 ss -tn state established 的区别
ss -tun 默认包含所有非监听 TCP/UDP 连接,包括 CLOSE_WAIT、TIME_WAIT、FIN_WAIT1 等,适合排查连接泄漏问题;而 ss -tn state established 是显式过滤,只保留真正通信中的连接,字段第 5 列 Peer Address:Port 就是客户端 IP 和端口。常见误操作:
- 用
ss -tln查客户端——显示的是监听列表,无连接时则为空; - 用
grep :80替代内置过滤——会误匹配到192.168.80.1这类 IP,也会漏掉源端口为 80 的连接; - 正确的过滤语法:
ss -tn 'dport = :80'(别人连你 80),ss -tn 'sport = :80'(你主动用 80 当源端口)。
查看进程归属:加 -p 参数为何提示 Permission denied
-p 本身不报错,但没权限时内核拒绝提供进程信息,ss 会静默跳过——看似无输出,实则是权限不足导致。必须用 sudo ss -tulnp 才能看到其他用户的进程名和 PID;输出中最后一列形如 users:(("nginx",pid=1234,fd=6)),其中 pid 是进程 ID,fd 是该 socket 对应的文件描述符编号。注意:某些 Linux 发行版(如 Alpine)默认禁用 netlink 权限,即使加 sudo 也可能看不到进程,此时需检查内核配置或换用 lsof -i :端口 临时替代。
监控网络连接状态:ss -s 统计数据的含义
ss -s 不列具体连接,只给全局快照,关键看这几项:
tcp行里的estab是当前活跃连接数,time-wait超过 2 万需警惕端口耗尽;timewait 23182/0中斜杠后那个数字是哈希桶溢出次数,非零说明内核连接表压力过大,可能引发丢包或新建连接失败;CLOSE-WAIT多,基本等于本地方应用没调close();FIN-WAIT-2高,大概率是对端没发 FIN,或者本端 close 后没等完就退出进程;
不要使用 wc -l 统计行数来替代 ss -s——它统计的是 socket 实例,不是文本行数,ss -tan | wc -l 在 TIME_WAIT 多时严重低估真实连接负载。
真正容易被忽略的,是 ss 命令状态语义与过滤语法的耦合性:例如 state connected 和 state established 等价,但 state listen 仅对 -l 有效;dport 和 src 不能不加括号混用在同一条命令中;此外,IPv6 地址包含方括号,使用 cut -d: -f1 提取 IP 会截断 [::1] 成为空字符串——这些细节若不经过实践,很难真正掌握并正确使用 ss 命令。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Mac隐藏左上角菜单栏苹果图标
先直接告诉你答案:Mac电脑屏幕左上角的那个苹果标志,既无法关闭,也无法隐藏。它是系统级的固定入口,所有macOS版本都会强制显示。苹果既没有提供开关选项,也没有预留终端命令,更不可能在系统偏好设置里让你找到隐藏开关。如果有人声称能用第三方工具或修改系统文件来删除它,千万别相信——结果很可能是系统不
Win11切换输入法的几种常用方法和快捷键设置
写文档写得正顺,突然要敲几个英文单词,或者打代码时想切回中文拼音——手指条件反射地按下Ctrl+Space,光标却纹丝不动。这种场景你应该不陌生。Windows 11其实准备了五种互不干扰的切换方式,有些连锁屏界面都能响应,关键是你得选对场景来用。下面把这五种路径挨个拆开,看完你就能找到最适合自己的
电脑开机黑屏提示未检测到启动盘修复方法
电脑开机直接黑屏,屏幕上孤零零地显示一句“No boot disk has been detected”——别紧张,这并非系统崩溃,也不是常见的蓝屏代码,而是主板在告诉你:“我没有找到硬盘。”换句话说,电脑连BIOS自检阶段都没能通过。 这属于硬件层面的硬中断,与引导损坏、系统文件丢失完全不是一回事
Windows 11更改默认音频采样率级别的详细方法
Windows 11 用户在播放音频时,偶尔会遇到爆音、杂音甚至声音动态被压缩得干瘪的情况。这种问题通常并非硬件损坏,而是系统在音频采样率设定上“擅作主张”了。例如某次系统更新后,默认格式可能被悄然重置为 24 位 192000 Hz——一个不少声卡难以稳定运行的高规格,结果导致 DMA 缓冲溢出、
Win11如何查看笔记本实时充电功率
对于笔记本充电功率的实时监测,系统自带的电池图标只能显示“正在充电”或“已充满”,却无法告知具体的瓦数。要获得实时数值,需要绕过默认界面直接读取硬件传感器。这里直接给出结论:最可靠的工具是HWiNFO64,其次是BatteryInfoView,而powercfg只能用于间接验证。无论你遇到插着65W
- 日榜
- 周榜
- 月榜
相关攻略
2026-07-02 07:30
2026-07-02 07:29
2026-07-02 07:29
2026-07-02 07:29
2026-07-02 07:29
2026-07-02 07:29
2026-07-02 07:29
2026-07-02 07:28
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

