TL;DR

端口问题三步走:ss -tlnp 看监听,lsof -i :端口 找占用者,ps -p PID -o pid,cmd 确认身份后再 kill

查看监听端口

操作命令
所有 TCP 监听及进程ss -tlnp
只看某端口ss -tlnp 'sport = :8080'
旧命令替代netstat -tlnp
查看 UDPss -ulnp

找进程

操作命令
谁占用了端口lsof -i :8080
按名字找进程pgrep -f 关键字
查看进程详情ps -p PID -o pid,user,cmd
完整列表过滤`ps auxgrep 关键字`

处理进程

操作命令
正常终止kill PID
强制终止kill -9 PID
按名字终止pkill -f 关键字

排查要点

常见问题

怎么查看 8080 端口被哪个进程占用?

ss -tlnp 'sport = :8080';看不到进程名就加 sudo。老系统用 netstat -tlnp,或用 lsof -i :8080

ss 看不到进程名怎么办?

通常是权限不足:ss -tlnp 需要 root 才能显示进程名,用 sudo ss -tlnp

端口被占用怎么杀掉进程?

lsof -i :端口ss -tlnp 拿到 PID,用 ps -p PID -o pid,cmd 确认是什么进程,再 kill PID;确认无误杀风险才用 kill -9 PID

怎么判断端口是不是对外开放的?

看监听地址:127.0.0.1 只允许本机;0.0.0.0 或 * 监听所有网卡,外部可访问。再从外部机器 nc -vz 服务器IP 端口 验证。

netstat 和 ss 有什么区别?

ss 是 netstat 的现代替代,更快且 root 下默认显示进程;netstat 属于 net-tools,老系统还在用,两者参数基本一致。

来源

最后更新:2026-08-04