如何通过 ss 命令查看监听端口的网络服务?

问题浏览数Icon
43
问题创建时间Icon
2025-04-20 03:42:00
回答 | 共 8 个
作者头像
nightweave99

使用 ss 命令查看监听端口的网络服务时,建议结合以下参数组合:

  1. ss -ltn:列出所有TCP协议下的监听端口(-l监听,-tTCP,-n数值格式)。
  2. ss -lun:查看UDP协议的监听端口(-uUDP)。
  3. ss -ltnp:显示TCP监听端口及关联进程(-p进程信息,需root权限)。
  4. 过滤特定端口:ss -lnt 'dport = :80'。 输出结果包含Local Address(监听地址:端口)及状态(LISTEN),可快速定位服务及配置。
作者头像
bigmoon9

为什么不尝试使用 netstat -tulpn 命令呢?它能以更直观的方式展示监听端口及相关服务名称。

作者头像
netwha

使用 ss 命令查看监听端口的网络服务时,可通过以下步骤实现:

  1. 基础命令:执行 ss -ltn 查看所有处于监听(LISTEN)状态的 TCP 端口,-l 表示监听状态,-t 表示 TCP,-n 禁止域名/服务名解析(直接显示端口号)。
  2. 详细信息:添加 -p 参数显示进程信息(需 root 权限),如 sudo ss -ltnp,可查看监听端口的进程名称及 PID。
  3. 扩展协议:替换 -t-u 可查看 UDP 监听端口,例如 ss -lun
  4. 过滤端口:使用 sport = :端口号 过滤指定端口,如 ss -ltn sport = :80 查看 80 端口的监听情况。

输出结果中,Local Address:Port 列显示监听地址和端口,Process 列(带 -p 时)标识服务名称,便于快速定位服务状态。

作者头像
xiaoshan33

用这个命令就行:ss -tunlp。简单解释一下:-t是看TCP,-u是看UDP,-l是只看监听中的端口,-n不解析成服务名(直接显示端口号),-p还能显示对应的程序名字。记得前面加sudo才能看到所有进程~

作者头像
zhongtian99

通过ss命令查看监听端口的网络服务时,我通常遵循以下实践流程:

  1. 基础命令构造 执行 ss -tulnp 组合命令:

    • -t 显示TCP套接字
    • -u 显示UDP套接字
    • -l 仅显示监听状态
    • -n 禁止服务名称解析
    • -p 显示进程信息
  2. 输出解析要点:

    • Local Address字段中『*:80』表示所有IP的80端口
    • 『127.0.0.1:53』表示仅本地回环的53端口
    • Process列显示PID/程序名,需root权限才能完整显示
  3. 高级排查技巧:

    • 组合grep过滤特定端口:ss -lnpt sport = :443
    • 显示详细定时器信息:ss -t -o state established
    • 对比IPv4/IPv6监听差异:分别使用-4-6参数

实际挑战案例: 曾遇Nginx未监听预期端口,ss显示进程属主为65534(容器用户),后发现是Docker端口映射错误。通过ss -tulp | grep 65534快速定位容器化服务异常。

注意事项:

  • 容器网络需进入对应namespace查看真实监听状态
  • 部分SELinux环境会隐藏进程信息
  • 对于TIME_WAIT等非监听状态需用不同过滤条件
作者头像
frostedge09

使用 ss 命令查看监听端口的网络服务时,可以结合 -l(监听状态)和 -n(数字格式)参数。例如,ss -tuln 能清晰列出所有TCP/UDP监听端口及对应服务。其中 -t 表示TCP,-u 表示UDP。通过解析输出中的 Local Address:Port 字段,可快速定位服务监听的IP和端口。对于企业环境,建议结合 grep 过滤关键服务(如 ss -tln | grep :80),或使用 -p(需root权限)查看进程信息,便于安全审计和端口冲突排查。

作者头像
ptstorm07

使用ss命令查看监听端口的网络服务时,建议优先采用ss -ltn组合命令:

  1. -l仅显示监听状态的端口;
  2. -t指定TCP协议(替换为-u可查看UDP);
  3. -n禁用DNS解析,加速输出并避免因反向查询导致的延迟。 若需关联进程信息,可追加-p参数(需root权限),例如sudo ss -ltnp。 高级场景中,可通过dport = 端口号语法过滤特定端口,如ss -ltn 'dport = 80'。注意:相比传统netstatss直接读取内核数据,输出更精确且性能更优,适合自动化脚本集成。
作者头像
sunliang01
  1. 使用命令查看所有监听端口: sudo ss -tuln-t:显示TCP协议 • -u:显示UDP协议 • -l:仅列出监听(LISTEN)状态的套接字 • -n:以数字形式显示端口/IP(不解析域名和服务名)

  2. 输出列说明: • Local Address:Port:服务监听地址及端口 • Process:若添加-p参数可显示进程信息(需sudo权限)

  3. 示例:

    Netid  State   Local Address:Port
    tcp    LISTEN 0.0.0.0:22          
    udp    UNCONN 0.0.0.0:68

    表示SSH服务(22端口)和DHCP客户端(68端口)正在运行

  4. 过滤特定端口(如80): ss -tuln | grep ':80'