rmdir.cn
← 排障手册

端口占用排障

定位监听地址、协议和进程归属,检查 systemd 服务及容器端口映射。

适用范围与前提

Linux TCP/UDP 监听冲突;不直接终止占用进程。

  • 确认需要绑定的地址、端口和 TCP/UDP 协议。
  • 查看他人进程通常需要 sudo;把 APP_PID 与 APP_SERVICE 替换为实际进程号及服务名。

命令仅供手动复制到获授权的环境执行。站点不会连接服务器;涉及网络的诊断可能产生请求或登录审计记录。

1. 列出监听与协议

sudo ss -ltnp
sudo ss -lunp

预期现象:对照本地地址和协议。0.0.0.0、:: 与指定地址的绑定可能冲突;IPv6 双栈行为依系统配置。

2. 确认 PID 和服务归属

ps -fp APP_PID
systemctl status APP_SERVICE --no-pager

预期现象:确认可执行文件、用户、父进程和所属服务,不只根据进程名字判断。status 对停止服务返回非零并不代表命令损坏。

3. 检查容器发布端口

docker ps --format "table {{.Names}}	{{.Ports}}	{{.Status}}"

预期现象:核对宿主端口与容器端口,确认 Docker CLI 指向预期主机。Docker 权限等价于高权限,不能随意授予。

修复建议(需人工确认)

  • 由业务负责人决定更改新服务端口或监听地址,并更新健康检查、反向代理及访问策略。
  • 只有确认影响、保留配置并安排维护窗口后才停止重复服务或调整容器映射;不默认使用强制杀进程。
完成经确认的修复后,验证恢复

验证恢复

  • 重新检查 ss 与容器端口映射,确认预期进程独占正确地址和协议。
  • 按业务允许的方法验证服务可达,观察启动日志是否继续报绑定失败。

升级求助前收集

  • 准确错误文本、地址/端口/协议、PID 与所属服务、脱敏容器端口映射。