用 ss 看清 Linux 上谁在听端口
【摘要】 用 ss 看清 Linux 上谁在听端口排查「端口被占用」或「服务到底有没有起来」时,很多人还在用 netstat。新一点的系统更推荐 ss:它属于 iproute2,默认就有,输出也更干净。 先看谁在监听只看 TCP 监听端口:ss -lntp常用参数:-l:只看 listening-n:端口用数字,不反查服务名(更快)-t / -u:TCP / UDP-p:尽量显示进程(通常要 roo...
用 ss 看清 Linux 上谁在听端口
排查「端口被占用」或「服务到底有没有起来」时,很多人还在用 netstat。新一点的系统更推荐 ss:它属于 iproute2,默认就有,输出也更干净。
先看谁在监听
只看 TCP 监听端口:
ss -lntp
常用参数:
-l:只看 listening-n:端口用数字,不反查服务名(更快)-t/-u:TCP / UDP-p:尽量显示进程(通常要 root 才能看到完整信息)
想确认 80 或 443 有没有人占:
sudo ss -lntp | grep -E ':80|:443'
输出里的 users:(("nginx",pid=1234,fd=6)) 直接告诉你是哪个进程。
看已建立的连接
不止监听,还想看当前会话:
ss -antp state established
或按远端过滤:
ss -ant 'dst 1.2.3.4'
排查偶发超时、连接堆积时,先看 established / time-wait 数量有没有异常,往往比盲目重启服务更有用。
和 lsof 怎么选
lsof -i :8080 也能查出占用端口的进程,但在连接很多的机器上通常更慢。ss 读内核信息更轻,适合当日常第一刀;真要追到具体文件描述符或用户态细节,再上 lsof / ls -l /proc/<pid>/fd。
小习惯
- 服务启动后先
ss -lntp | grep <port>,确认监听地址是0.0.0.0、::还是只绑了127.0.0.1。 - 容器或多网卡环境,注意看 Local Address,别只看端口号。
- 没有 root 时
-p可能看不到进程名,可改用sudo,或先用端口再查systemctl/ 容器映射。
把 ss -lntp 当成开机自检和排障的默认命令后,很多「服务起了但外面连不上」的问题,几秒就能分清是没监听、绑错地址,还是被别的进程占了端口。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)