Linux网络诊断利器:ss命令核心用法与实战技巧
在 Linux 服务器运维和网络问题排查中快速查看系统当前的网络连接状态是每个工程师必须掌握的基础技能。虽然传统的netstat命令广为人知但在现代 Linux 系统中ss命令凭借其更快的执行速度、更丰富的连接状态信息和更直接的底层数据获取方式已经成为网络诊断的首选工具。对于需要管理服务器、排查网络问题或优化应用性能的开发者来说三分钟内掌握ss命令的核心用法意味着能够快速定位端口占用、分析连接状态、检查监听服务这些在日常部署、故障排查和性能调优中都是高频操作。本文将围绕实际工作场景从基础查询到高级过滤带你系统掌握ss命令的实用技巧。1. 为什么现代 Linux 更推荐使用 ss 而不是 netstat1.1 ss 命令的性能优势ssSocket Statistics命令直接从内核空间获取 socket 信息而netstat需要遍历/proc/net/tcp等伪文件系统。在处理大量网络连接时ss的速度优势非常明显。在实际测试中当系统存在数万个连接时ss的响应时间可能只有netstat的十分之一。这种性能差异在容器化环境或高并发服务器上尤为显著。例如一个繁忙的网关服务器可能同时维持数万条 TCP 连接使用netstat进行诊断可能会消耗数秒甚至更长时间而ss几乎可以实时返回结果。1.2 更丰富的连接状态信息ss能够显示更多 TCP 内部状态信息包括定时器详情、内存使用情况、拥塞控制参数等。这些信息对于深度排查网络问题非常有价值。# 对比两个命令的输出差异 $ netstat -tunlp $ ss -tunlp虽然两个命令的输出格式相似但ss提供了更详细的进程信息和 socket 选项。特别是在显示进程名和 PID 时ss -p的格式更加清晰易读。1.3 更精确的过滤能力ss支持基于表达式的复杂过滤可以精确匹配特定状态的连接、特定端口的连接或特定 IP 范围的连接。这种过滤能力让问题定位更加高效。2. ss 命令的基础用法和常用选项2.1 查看所有连接的基本命令默认情况下ss显示所有已建立的连接不包括监听状态的 socket$ ss这个简单的命令会列出所有的 TCP、UDP 和 UNIX 域 socket。输出包含以下列Netid: socket 类型tcp, udp, u_str 等State: 连接状态Recv-Q: 接收队列中的字节数Send-Q: 发送队列中的字节数Local Address:Port: 本地地址和端口Peer Address:Port: 对端地址和端口2.2 按协议类型过滤显示在实际工作中我们通常需要查看特定类型的连接# 显示所有 TCP 连接 $ ss -t # 显示所有 UDP 连接 $ ss -u # 显示所有 UNIX 域 socket进程间通信 $ ss -x # 显示所有 RAW socket $ ss -w关键选项说明-t或--tcp: 仅显示 TCP socket-u或--udp: 仅显示 UDP socket-x或--unix: 仅显示 UNIX domain socket-w或--raw: 仅显示 RAW socket2.3 显示监听端口和所有连接查看监听端口是服务器管理中最常见的操作# 显示所有监听中的 TCP 端口 $ ss -tln # 显示所有监听中的 UDP 端口 $ ss -uln # 显示所有 socket包括监听和已建立连接 $ ss -a选项组合解析-l或--listening: 仅显示监听状态的 socket-a或--all: 显示所有 socket监听 非监听-n或--numeric: 不解析服务名称直接显示端口号加快显示速度2.4 显示进程信息和解析服务名排查端口占用问题时需要知道是哪个进程在使用端口# 显示 TCP 连接及关联的进程信息 $ ss -tlnp # 显示 UDP 连接及关联的进程信息 $ ss -ulnp # 解析服务名称而不是显示端口号 $ ss -tl重要选项-p或--processes: 显示使用 socket 的进程信息-r或--resolve: 尝试解析数字地址/端口为主机名/服务名3. 高级过滤和状态查询技巧3.1 按连接状态过滤TCP 连接有不同的状态通过状态过滤可以快速定位问题# 显示所有已建立的 TCP 连接 $ ss -t state established # 显示所有监听中的 TCP 连接 $ ss -t state listening # 显示所有 TIME-WAIT 状态的连接 $ ss -t state time-wait # 显示除监听外的所有连接状态 $ ss -t state connected常用的 TCP 状态过滤器established: 已建立的连接syn-sent: 同步已发送syn-recv: 同步已接收fin-wait-1: 结束等待1fin-wait-2: 结束等待2time-wait: 时间等待closed: 已关闭close-wait: 关闭等待last-ack: 最后确认listening: 监听中closing: 关闭中3.2 按端口和 IP 地址过滤精确查找特定服务或客户端的连接# 查找目标端口为 80 的所有连接 $ ss -t dst :80 # 查找源端口为 22 的所有连接 $ ss -t sport :22 # 查找与特定 IP 的连接 $ ss -t dst 192.168.1.100 # 组合条件查找目标端口为 443 且已建立的连接 $ ss -t state established dport :443过滤表达式语法dst IP:PORT: 目标地址和端口src IP:PORT: 源地址和端口dport OP PORT: 目标端口比较OP 可以是 , !, , 等sport OP PORT: 源端口比较3.3 复杂的逻辑表达式过滤ss支持使用逻辑运算符组合多个条件# 显示目标端口为 80 或 443 的已建立连接 $ ss -t state established ( dport :http or dport :https ) # 显示源端口为 22 或目标端口为 22 的连接 $ ss -t ( sport :ssh or dport :ssh ) # 排除本地回环地址的连接 $ ss -t not dst 127.0.0.1/84. 实战案例常见运维场景的应用4.1 案例一排查端口占用问题当启动服务发现端口被占用时需要快速定位占用进程# 查看 8080 端口被哪个进程占用 $ ss -tlnp | grep :8080 # 更精确的查询方式 $ ss -tlnp sport :8080输出示例LISTEN 0 128 *:8080 *:* users:((java,pid1234,fd3))从输出可以看到PID 为 1234 的 Java 进程正在监听 8080 端口。4.2 案例二分析服务器连接数监控服务器连接状态识别异常连接模式# 统计各种状态的 TCP 连接数量 $ ss -t | awk {print $2} | sort | uniq -c | sort -rn # 查看与特定客户端的连接 $ ss -t dst 10.0.0.1004.3 案例三检查服务的网络连通性验证服务是否正常监听和接受连接# 检查 MySQL 服务是否在监听 $ ss -tlnp | grep :3306 # 检查 Nginx 的 HTTP 和 HTTPS 监听状态 $ ss -tlnp | grep -E :(80|443) 4.4 案例四识别异常连接状态排查网络问题时常需要检查异常状态的连接# 检查长时间处于 SYN-RECV 状态的连接可能遭受 SYN Flood 攻击 $ ss -t state syn-recv # 检查大量 TIME-WAIT 连接可能需要调整内核参数 $ ss -t state time-wait5. 高级功能和内部信息查看5.1 查看 TCP 内部计时器信息对于性能调优和故障排查TCP 定时器信息非常有用$ ss -tio输出中的定时器信息格式timer:(timer_name,expire_time,retrans)timer_name: 定时器类型on, keepalive, timewait, persist 等expire_time: 定时器到期时间retrans: 重传次数5.2 查看 socket 内存使用情况分析应用程序的网络内存占用$ ss -tm输出显示 socket 内存使用的详细分解rmem_alloc: 接收包已分配内存rcv_buf: 接收缓冲区总大小wmem_alloc: 发送包已使用内存snd_buf: 发送缓冲区总大小5.3 查看 TCP 内部参数获取连接级别的 TCP 性能参数$ ss -ti重要参数包括rtt: 往返时间cwnd: 拥塞窗口大小mss: 最大分段大小ssthresh: 慢启动阈值6. 常见问题排查指南6.1 ss 命令执行无输出或报错问题现象可能原因解决方案执行ss无任何输出系统确实没有网络连接检查网络服务是否正常启动提示命令未找到ss 命令未安装安装 iproute2 包包yum install iproute2或apt install iproute2权限不足错误普通用户无法查看进程信息使用 sudo 执行sudo ss -tlnp6.2 端口查询的常见误区误区一只检查监听端口忽略已建立连接# 错误做法只检查监听端口 $ ss -tln | grep :3306 # 正确做法同时检查已建立的连接 $ ss -t | grep :3306误区二忽略 UDP 端口的检查# DNS 等服务使用 UDP也需要检查 $ ss -uln | grep :536.3 性能优化相关排查当发现大量特定状态的连接时可能需要进行内核参数调优# 检查 TIME-WAIT 连接数量 $ ss -t state time-wait | wc -l # 如果数量过多可能需要调整内核参数 $ echo net.ipv4.tcp_tw_reuse 1 /etc/sysctl.conf $ sysctl -p7. 生产环境最佳实践7.1 日常监控脚本示例将ss命令集成到监控脚本中#!/bin/bash # 监控服务器连接状态的脚本 echo TCP 连接状态统计 ss -t | awk {print $2} | sort | uniq -c | sort -rn echo -e \n 监听端口检查 ss -tln | grep LISTEN echo -e \n 连接数最多的前5个IP ss -tn | awk {print $6} | cut -d: -f1 | sort | uniq -c | sort -rn | head -57.2 安全审计注意事项在使用ss进行安全审计时检查异常监听端口定期检查是否有未知服务在监听监控外连连接关注服务器主动外连到未知地址关注敏感端口特别注意 22、23、3389 等管理端口的连接# 安全检查脚本片段 $ ss -tpln | grep -E :(23|3389)7.3 与其他命令的配合使用ss可以与其他网络工具配合使用# 结合 grep 进行精确过滤 $ ss -tlnp | grep java # 结合 awk 进行数据提取 $ ss -tn | awk {print $6} | sort | uniq -c # 结合 watch 进行实时监控 $ watch -n 1 ss -t state established掌握ss命令的核心用法后在日常服务器管理和网络问题排查中能够大幅提升效率。从简单的端口查看到复杂的连接状态分析这个工具为 Linux 系统工程师提供了强大的网络诊断能力。实际使用时建议结合具体场景灵活运用不同的选项组合并建立常态化的监控检查机制。

相关新闻

AdvUnlearn阅读笔记:基于对抗训练的扩散模型鲁棒概念擦除

AdvUnlearn阅读笔记:基于对抗训练的扩散模型鲁棒概念擦除

AdvUnlearn阅读笔记:基于对抗训练的扩散模型鲁棒概念擦除 引言:概念擦除的挑战与对抗训练的必要性扩散模型(如Stable Diffusion)在图像生成领域取得了巨大成功,但其训练数据中可能包含有害概念(如暴力、色情…

2026/10/17 4:40:18 阅读更多 →
从技术债到架构红利:RabbitMQ 4.2.0的元数据存储范式转移

从技术债到架构红利:RabbitMQ 4.2.0的元数据存储范式转移

从技术债到架构红利:RabbitMQ 4.2.0的元数据存储范式转移 【免费下载链接】rabbitmq-server Open source RabbitMQ: core server and tier 1 (built-in) plugins 项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-server 在分布式消息系统的演进历程中…

2026/10/17 4:35:51 阅读更多 →
Drift数据库开发实战:类型安全的SQLite解决方案

Drift数据库开发实战:类型安全的SQLite解决方案

Drift数据库开发实战:类型安全的SQLite解决方案 在现代移动应用开发中,数据持久化是一个核心需求。传统SQLite开发常因手写SQL语句的类型安全问题而引发运行时错误。Drift(原Moor)作为Dart生态中的ORM框架,通过编译时类…

2026/10/17 4:37:35 阅读更多 →

最新新闻

CMake实战进阶:从Makefile到跨平台构建系统的完整指南

CMake实战进阶:从Makefile到跨平台构建系统的完整指南

写在前头,我正在整理一份完整CMake教程。前阵子有朋友跟我抱怨,说代码在自己电脑上跑得好好的,换到Linux服务器上编译直接挂掉,一查头文件路径全写死成本地目录格式了。我问他为什么不用CMake,他的回答很有意思&#x…

2026/10/19 2:46:51 阅读更多 →
jsPlumb + jQuery 流程图设计器:拖拽连线与序列化实战

jsPlumb + jQuery 流程图设计器:拖拽连线与序列化实战

简介:这是一份面向Web前端开发者与工作流设计人员的jsPlumbjQuery流程图设计实例资源,适合希望快速掌握可视化连线、节点拖拽与动态流程图搭建的初中级开发者。压缩包共216个文件,约984KB,以148张png截图、24个js脚本、20个gif动图…

2026/10/19 2:46:51 阅读更多 →
H5 AI聊天流式响应实战:SSE解析、打字机渲染与性能优化

H5 AI聊天流式响应实战:SSE解析、打字机渲染与性能优化

1. 别急着接SDK:先搞清楚H5里的AI流式响应到底卡在哪做AI聊天功能,很多前端朋友第一次接后端流式接口时都会遇到同一个困惑:明明后端数据是一段一段吐出来的,自己也用了EventSource或者fetch的ReadableStream,页面上的…

2026/10/19 2:46:51 阅读更多 →
腾讯云人脸识别API实战:刷脸门禁系统从方案到踩坑全指南

腾讯云人脸识别API实战:刷脸门禁系统从方案到踩坑全指南

前阵子有人找我,说他们团队做了一个带门禁功能的管理系统,想让摄像头“认识”每一个进门的员工。需求一句话就能讲完:刷脸开门。但真正落地的时候,从选方案、调阈值到处理各种照片过不了、活体被绕过的问题,远比想象中…

2026/10/19 2:46:51 阅读更多 →
RIS辅助多用户MIMO系统MATLAB仿真:从信道建模到SBL-GAMP估计

RIS辅助多用户MIMO系统MATLAB仿真:从信道建模到SBL-GAMP估计

简介:面向计算机、电子信息工程与数学等专业学生,这套Matlab仿真工程围绕可重构智能表面(RIS)辅助多用户MIMO系统展开,重点实现无源波束成形与信息传输的联合设计,可直接用于课程设计、期末大作业或毕业设计…

2026/10/19 2:46:51 阅读更多 →
Agentic Workflow 实战:从问答到任务执行闭环的AI应用改造

Agentic Workflow 实战:从问答到任务执行闭环的AI应用改造

过去一年我一直在做 AI Native 类产品,听得最多的反馈不是“这个 AI 回答得不准确”,而是“它回答得很好,但它没有帮我把事情办完”。这句话其实点中了现在大量 AI 应用的通病:交互逻辑还停留在“问答”上,没有进入“任…

2026/10/19 2:45:51 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →