首页/网络/网络排障速查/ss -xl:查看 Unix 域套接字

ss -xl:查看 Unix 域套接字

本地 IPC 排障:Unix 域套接字是数据库、PHP-FPM、Docker、systemd 的常客;服务没有 TCP 端口时,先确认它是否监听在 socket 文件上。

网络排障速查网络更新于 2026-10-13

ss -xl 是什么

Unix 域套接字是同一台机器上进程间的通信方式,数据库、PHP-FPM、Docker 守护进程、systemd 都大量使用它。它的特点是速度快、不需要 TCP 端口,因此『服务没起来』的结论常常下错:进程确实在监听,只不过监听在 socket 文件上。ss 加 -x 查看 Unix 套接字,加 -l 只看监听状态,加 -p 关联进程。

基本信息

适用平台Linux(iproute2 的 ss)、macOS(netstat 或 lsof)
关键选项-x Unix 域套接字、-l 只看监听、-p 显示进程
地址形态Local Address 位置显示的是 socket 文件路径
常见对象mysqld.sock、php-fpm.sock、docker.sock、systemd 套接字

典型使用场景

  • 数据库连不上:确认是否通过 socket 文件通信而非 TCP 端口
  • PHP-FPM 502:确认池监听的 socket 路径与 Web 服务器配置是否一致
  • 容器与宿主通信:确认 docker.sock 是否存在与挂载
  • 权限问题排查:socket 文件的属主与权限决定谁能连接
  • 端口耗尽分析:确认某些服务走本地套接字而完全不占端口

查看 Unix 套接字

查看 Unix 套接字
# 列出所有监听中的 Unix 套接字
ss -xl | head -20
# 关联进程,快速定位是哪个服务
ss -xlp | grep -iE 'mysql|php|docker'
# 直接确认 socket 文件是否存在与权限
ls -l /run/mysqld/mysqld.sock
# 只要监听状态
ss -xl state listening

判读要点

观察项含义常见问题
Local Addresssocket 文件路径与配置中写的路径不一致即连不上
进程关联监听该 socket 的进程没有进程说明服务未启动
文件权限属主与读写位Web 进程无权限导致连接被拒
文件不存在服务未创建或已被删除服务重启或目录被清理
socket 文件路径长度存在上限(常见的 sun_path 上限约 108 字节):路径过深过长会导致绑定失败,容器里挂载长路径目录时尤其容易踩到。
容器与宿主机互相看不到对方的 socket 文件:跨命名空间直接用宿主机路径去连容器内的 socket 必然失败,需要显式挂载或改用网络方式通信。

易错点

  • 只查 TCP 端口就断言服务没起来:忽略了服务监听在 Unix 套接字上
  • 路径长度超限导致绑定失败:报错信息不直观,容易误判为权限问题
  • 跨容器命名空间共用 socket 路径:文件不可见,连接自然失败
  • 忽略 socket 文件权限:属主与属组不匹配时连接被拒,日志往往很含糊
  • 服务重启后 socket 文件遗留:旧文件存在但无人监听,连接行为异常

数据来源与参考

  • man 8 ss(iproute2)
  • man 7 unix(Unix domain sockets)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌