🚀 这是你必须收藏的一篇运维干货!从新手到老鸟都绕不开的“ss查端口”技巧,全面解析TCP/UDP连接状态、进程追踪、字段含义,一网打尽!
一、背景:为什么要用 ss
查询端口?
在网络运维、安全排查、系统调优等实战场景中,我们常常需要:
判断是否存在异常监听端口(如木马监听)
查清哪个进程监听了哪个端口
查看服务器对外连接是否异常或被攻击(如UDP泛洪)
分析连接状态,如 ESTAB、LISTEN、CLOSE-WAIT 等
核对应用绑定端口是否符合预期,防止端口冲突
虽然经典命令如 netstat
也能实现,但:
❌
netstat
启动慢❌ 一些系统甚至不再默认安装
✅ 而
ss
(socket statistics)是更快更现代的替代品
二、常用命令:ss 查端口的最全命令合集
✳️ 推荐加
-H
参数取消标题栏,利于脚本处理。
三、字段详解:你看到的都是什么意思?
下面是一条典型的 ss -ltnp
输出结果:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))
四、重点讲解 Process 字段结构(含括号内含义)
来看这一段内容:
users:(("nginx",pid=1234,fd=6))
含义逐项解释如下:
延伸知识:
可以用
ls -l /proc/1234/fd/6
查到这个 socket 绑定的信息。有些进程可能会显示多个监听端口,也会出现多个 fd。
五、UDP 端口怎么查?是否也能显示进程?
可以!命令为:
ss -lnup
UDP 是无连接的协议,所以状态字段不像 TCP 那么丰富,常常显示为 UNCONN
或省略状态。
示例:
UNCONN 0 0 127.0.0.1:123 0.0.0.0:* users:(("chronyd",pid=950,fd=5))
这表示 chronyd
这个时间同步服务监听了 123 端口,协议是 UDP。
六、实战案例:快速定位异常占用端口
场景一:谁监听了 8080?
ss -ltnp | grep :8080
输出:
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=2301,fd=45))
➡️ 说明是某个 java
应用绑定了 8080,你可以结合 ps -p 2301 -f
进一步确认是哪一个。
场景二:排查UDP木马
ss -lnup
看到陌生服务监听了一些非常规端口,如 53413、65732,可立刻用如下命令查明路径:
ls -l /proc/6573/exe
查出其来源,结合 chkconfig
或 systemctl
查看是否开机启动。
七、小结:ss 是现代运维必备工具!
🌟 进阶建议:可将
ss
结合watch
实时查看端口连接情况,命令如下:
watch -n 1 'ss -s'
最后一句总结:
看清每一个端口的背后,是你对系统安全与运行状态的真正掌控!
📌 收藏这篇文章,当你哪天“端口异常”抓耳挠腮时,它就是你的救命指南!