端口被占用,却找不到进程
启动服务报 Address already in use,ss -lntp | grep 8080 却是空的。
几种可能:
一,进程在别的 network namespace 里。ss 默认只看当前 netns;容器里的进程在宿主机的 ss 里看不到,但端口是真实占用的。nsenter -t <pid> -n ss -lntp 进去看。
二,SO_REUSEADDR 没设,而 8080 上有大量 TIME_WAIT。这种情况 ss -tan 能看到,-l 看不到。
三,端口落在 net.ipv4.ip_local_port_range 里,被内核当成本地临时端口用了。改服务端口,或者缩小保留范围。
四,ss 的 -p 需要 root,没权限时进程名一列是空的,看着像没进程。