推荐使用sudo ss -tunap命令,可一次性显示所有tcp/udp监听和已建立连接状态,并附带进程名与pid;-n避免dns解析,-p需sudo权限才能查看完整进程信息。

要同时看到监听端口、已建立连接,以及它们各自归属的进程,关键不是堆砌命令,而是选对工具+用对参数。现代 Linux 系统推荐直接用 ss,它能一次性把状态和进程都列清楚,比 netstat 快且原生支持。
用 ss 查全量连接与进程(推荐首选)
执行这条命令就能覆盖绝大多数排查场景:
- sudo ss -tunap:显示所有 TCP/UDP 的监听(LISTEN)和已建立(ESTABLISHED)连接,并附带进程名和 PID
- 加 -n 避免 DNS 解析拖慢速度,直接显示端口号
- 加 -p 是关键——没有 sudo 权限时看不到其他用户的进程信息
- 如果只关心 TCP,可去掉 -u;若只想看监听状态,把 -a 换成 -l
用 lsof 查监听端口的精确归属
当需要确认某个端口是否真在 LISTEN 状态、绑定到哪个 IP、甚至查配置文件路径时,lsof 更细致:
- sudo lsof -iTCP -sTCP:LISTEN -P -n:只列出 TCP 监听端口,不解析服务名和主机名,输出干净
- sudo lsof -i :8080:查 8080 端口所有相关连接(含监听和 ESTABLISHED)
- 输出里的 ADDRESS 列能看出是
0.0.0.0:8080(对外开放)还是127.0.0.1:8080(仅本地) - 拿到 PID 后,用 ps -fp PID 或 lsof -p PID 可进一步查工作目录、配置文件等
用 netstat 兼容旧环境或交叉验证
某些容器镜像或 CentOS 6 类系统没预装 ss,netstat 仍是可靠备选:
- sudo netstat -tulnp:等效于 ss -tulnp,查看所有监听端口及进程
- sudo netstat -tunap | grep ESTABLISHED:单独筛选已建立连接
- 注意:部分新发行版默认不带 net-tools,需先运行 sudo apt install net-tools 或 sudo yum install net-tools
快速定位冲突端口的实用技巧
遇到“Address already in use”错误时,别一行行翻,直接锁定:
- 查 3000 端口谁在用:sudo ss -tulnp | grep ':3000'
- 查 UDP 53 端口:sudo ss -ulpn | grep ':53'
- 只想看 PID(方便 kill):sudo lsof -t -i :80
- 想终止占用进程:sudo fuser 80/tcp -k(-k 表示 kill)











