当前位置:首页 > Linux > 正文

linux下如何用ss

nux下使用 ss命令查看网络连接,常用参数如 -t显TCP、 -u显UDP、 -a全连接、 -p带进程信息。

Linux系统中,ss(Socket Statistics)是一个强大的网络诊断工具,用于实时监控和分析网络连接、端口状态及协议统计信息,以下是关于如何使用ss命令的详细说明:

基础语法与核心参数

ss的基本语法为:ss [OPTIONS] [FILTER],其中可选参数决定了输出内容的详细程度和过滤条件,以下是常用参数及其功能:

参数 功能描述
-t 仅显示TCP类型的套接字
-u 仅显示UDP类型的套接字
-l 只列出处于监听状态(LISTEN)的端口
-a 显示所有套接字(包括监听和非监听状态)
-n 以数字形式展示地址和端口号,避免解析主机名或服务名称(如直接显示80而非http)
-p 关联进程信息,需root权限才能查看进程ID(PID)和程序名称
-s 提供全局统计摘要,如各类socket的数量与状态
-o 显示TCP定时器相关信息(例如重传超时、保活机制等),适用于调试连接异常问题
-e 扩展模式,展示更详细的元数据(如用户ID、inode节点号)
-m 显示内存使用情况
-i 显示TCP内部指标,如往返时延(RTT)、拥塞控制算法等
-4/-6 分别限制为IPv4或IPv6协议

常见应用场景示例

查看所有活动连接

执行ss -a可列出系统中所有的TCP和UDP连接,输出字段包括:协议类型(Netid)、状态(State)、接收队列长度(Recv-Q)、发送队列长度(Send-Q)、本地地址:端口以及远程对端的地址:端口。

Netid  State      Recv-Q Send-Q    Local Address:Port     Peer Address:Port
tcp    ESTAB      0      0        192.168.1.100:55432    192.168.1.1:22
udp    UNCONN     0      0        :68                   :

ESTAB表示已建立的有效连接,而UDP因无连接特性通常显示为UNCONN

linux下如何用ss  第1张

过滤特定类型的流量

若需专注于某一协议,可通过组合参数实现精准筛选:

  • 查看所有TCP连接ss -t -a
  • 查看所有UDP连接ss -u -a
  • 仅显示监听中的端口ss -l(常用于快速识别服务开放的入口,如SSH、HTTP等)

关联进程定位问题

当怀疑某个端口被未知应用占用时,使用sudo ss -t -p结合权限提升,可以获取到进程名、PID及文件描述符。

tcp   ESTAB   0      0      192.168.1.100:ssh    192.168.1.1:54321    users:(( "sshd",pid=1234,fd=3))

此命令帮助管理员迅速锁定占用资源的进程,便于后续处理如终止或调整配置。

按条件精细筛选

ss支持复杂的过滤表达式,满足多样化的需求:

  • 指定目标端口ss dport=:80ss sport=:80,分别针对目的端口或源端口进行匹配。
  • 特定IP地址交互ss src 192.168.1.1 查看来自该源IP的所有连接;ss dst 192.168.1.1则反向查询指向该目标IP的链接。
  • 关注特定状态:如排查高并发下的TIME-WAIT堆积问题,可用ss -t state time-wait

高级功能拓展

  • 统计概览:运行ss -s会得到系统级别的汇总数据,涵盖TCP、UDP、RAW等各类socket的数量及其不同状态分布,有助于宏观把握网络负载状况。
  • TCP行为分析:通过ss -to观察计时器设置,比如保持活跃探针的时间间隔,这对优化长连接的稳定性至关重要。
  • 多维度排序与后处理:借助管道符将输出传递给grepawk等工具,实现自动化解析和告警触发,监测异常地理位置的登录尝试:ss -tnp | grep '192.168'

实战案例:排查Web服务器性能下降原因

假设某网站响应变慢,怀疑是由于过多并发连接导致资源耗尽,此时可以通过以下步骤诊断:

  1. 使用ss -tunap查看当前活跃会话,特别是HTTP相关的端口(如80/443)。
  2. 如果发现大量TIME-WAIT状态的连接,可能表明客户端断开后未正确释放资源,这时可以考虑调优内核参数net.ipv4.tcp_tw_reuse以复用这些端口。
  3. 进一步用ss -s检查是否存在大量的CLOSE_WAIT状态,这通常意味着应用程序没有正确关闭socket,可能存在破绽或死锁。

FAQs

Q1: ss命令相比传统的netstat有什么优势?
A1: ss直接从内核获取数据,执行速度比netstat快10倍以上,且支持更丰富的过滤选项和更详细的TCP状态信息展示,它在处理大量并发连接时资源占用更低,更适合现代高性能服务器环境。

Q2: 为什么执行带-p参数的命令时提示权限不足?
A2: 因为显示进程信息需要访问其他用户的空间进程详情,必须拥有root权限才能完成这一操作,解决方案是在命令前添加sudo,`sudo

ss
0