游乐游手机版
首页/系统平台/文章详情

Linux ss命令查看网络连接状态方法

时间:2026-07-02 07:23
在高并发场景下,排查 Linux 网络连接状态,ss 命令是少数能稳定扛住压力、实时输出准确结果的工具。以 5 万连接进行测试:netstat 需要 15 秒才能完成,而 ss 仅需 0 3 秒——它直接读取内核 socket 子系统数据,无需依赖 proc net 解析,因此数据更实时准确。同样

在高并发场景下,排查 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_WAITTIME_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 地址含方括号需要特殊处理。

Linux怎么查看网络连接状态ss命令

简单来说,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 -tunss -tn state established 的区别

ss -tun 默认包含所有非监听 TCP/UDP 连接,包括 CLOSE_WAITTIME_WAITFIN_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 connectedstate established 等价,但 state listen 仅对 -l 有效;dportsrc 不能不加括号混用在同一条命令中;此外,IPv6 地址包含方括号,使用 cut -d: -f1 提取 IP 会截断 [::1] 成为空字符串——这些细节若不经过实践,很难真正掌握并正确使用 ss 命令。

来源:https://www.php.cn/faq/2751227.html
上一篇苹果电脑Mac系统删除文件确认提示关闭方法 下一篇Mac电脑关闭已选中的文件快速预览模式
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Mac隐藏左上角菜单栏苹果图标
系统平台 · 2026-07-02

Mac隐藏左上角菜单栏苹果图标

先直接告诉你答案:Mac电脑屏幕左上角的那个苹果标志,既无法关闭,也无法隐藏。它是系统级的固定入口,所有macOS版本都会强制显示。苹果既没有提供开关选项,也没有预留终端命令,更不可能在系统偏好设置里让你找到隐藏开关。如果有人声称能用第三方工具或修改系统文件来删除它,千万别相信——结果很可能是系统不

Win11切换输入法的几种常用方法和快捷键设置
系统平台 · 2026-07-02

Win11切换输入法的几种常用方法和快捷键设置

写文档写得正顺,突然要敲几个英文单词,或者打代码时想切回中文拼音——手指条件反射地按下Ctrl+Space,光标却纹丝不动。这种场景你应该不陌生。Windows 11其实准备了五种互不干扰的切换方式,有些连锁屏界面都能响应,关键是你得选对场景来用。下面把这五种路径挨个拆开,看完你就能找到最适合自己的

电脑开机黑屏提示未检测到启动盘修复方法
系统平台 · 2026-07-02

电脑开机黑屏提示未检测到启动盘修复方法

电脑开机直接黑屏,屏幕上孤零零地显示一句“No boot disk has been detected”——别紧张,这并非系统崩溃,也不是常见的蓝屏代码,而是主板在告诉你:“我没有找到硬盘。”换句话说,电脑连BIOS自检阶段都没能通过。 这属于硬件层面的硬中断,与引导损坏、系统文件丢失完全不是一回事

Windows 11更改默认音频采样率级别的详细方法
系统平台 · 2026-07-02

Windows 11更改默认音频采样率级别的详细方法

Windows 11 用户在播放音频时,偶尔会遇到爆音、杂音甚至声音动态被压缩得干瘪的情况。这种问题通常并非硬件损坏,而是系统在音频采样率设定上“擅作主张”了。例如某次系统更新后,默认格式可能被悄然重置为 24 位 192000 Hz——一个不少声卡难以稳定运行的高规格,结果导致 DMA 缓冲溢出、

Win11如何查看笔记本实时充电功率
系统平台 · 2026-07-02

Win11如何查看笔记本实时充电功率

对于笔记本充电功率的实时监测,系统自带的电池图标只能显示“正在充电”或“已充满”,却无法告知具体的瓦数。要获得实时数值,需要绕过默认界面直接读取硬件传感器。这里直接给出结论:最可靠的工具是HWiNFO64,其次是BatteryInfoView,而powercfg只能用于间接验证。无论你遇到插着65W