如何在命令行中查看某个特定端口的连接状态?
美国、香港服务器
如何在命令行中查看某个特定端口的连接状态?
02-14 来源:
在命令行中查看某个特定端口的所有连接状态(比如谁在连、连接是建立中 / 监听中、来源 IP 等),我给你3 个最实用的命令,从基础到详细,复制就能用,适配所有 Linux 系统(CentOS/Debian/Ubuntu),新手也能秒懂。
一、核心命令:查看指定端口的所有连接状态(首选)
用ss命令(Linux 标配,比netstat更快更全),精准筛选目标端口,直接显示连接状态、来源 IP、端口等关键信息:
bash
运行
# 替换8888为你要查询的端口(如22、80、3306)
ss -tan | grep -w ":8888"
参数说明:
-t:只看 TCP 端口(网站、SSH、宝塔都用 TCP,UDP 可换-u);
-a:显示所有连接(包括监听中、已建立、关闭中的);
-n:显示数字端口 / IP(不显示抽象的服务名,更直观);
-w:精准匹配端口号(避免匹配 88880、18888 等相似端口)。
输出示例(8888 端口):
plaintext
LISTEN 0 128 0.0.0.0:8888 0.0.0.0:*
ESTAB 0 0 192.168.1.100:8888 203.0.113.50:54321
TIME-WAIT 0 0 192.168.1.100:8888 114.114.114.114:60001
状态解读(新手必看):
表格
状态 含义
LISTEN 端口处于监听状态(正常对外提供服务,等待连接)
ESTAB 已建立连接(比如有用户 / IP 正在访问这个端口,是活跃连接)
TIME-WAIT 连接刚断开,处于临时等待状态(正常现象,无需处理)
CLOSED 端口无连接(无此状态输出则说明端口无连接)
二、进阶:查看连接状态 + 进程信息(知道谁在占用 + 谁在连接)
如果想同时看到「占用端口的进程」和「连接状态」,用这个命令:
bash
运行
# 替换8888为目标端口
ss -tanp | grep -w ":8888"
输出示例:
plaintext
LISTEN 0 128 0.0.0.0:8888 0.0.0.0:* users:(("bt-panel",pid=1234,fd=8))
ESTAB 0 0 192.168.1.100:8888 203.0.113.50:54321 users:(("bt-panel",pid=1234,fd=9))
能看到:8888 端口被 PID=1234 的宝塔面板进程占用,且有 203.0.113.50 这个 IP 正在连接。
三、备用命令(兼容旧系统)
如果服务器没有ss命令(极少情况),用传统的netstat,用法完全一致:
bash
运行
# 基础查看连接状态
netstat -tan | grep -w ":8888"
# 查看连接状态+进程信息
netstat -tanp | grep -w ":8888"
四、一键统计:看指定端口各状态的连接数(排查异常)
如果想快速知道某个端口有多少个活跃连接、多少个监听连接,用这个命令:
bash
运行
# 替换8888为目标端口
ss -tan | grep -w ":8888" | awk "{print $1}" | sort | uniq -c
输出示例:
plaintext
1 LISTEN
5 ESTAB
2 TIME-WAIT
说明:8888 端口有 1 个监听连接、5 个活跃连接、2 个等待关闭的连接,若ESTAB数量异常多,可能是恶意连接。
总结
基础查看连接状态:ss -tan | grep -w ":端口号"(首选)/netstat -tan | grep -w ":端口号"(备用);
查看状态 + 进程:ss -tanp | grep -w ":端口号";
统计各状态数量:ss -tan | grep -w ":端口号" | awk "{print $1}" | sort | uniq -c;
核心状态:LISTEN(监听)、ESTAB(活跃连接)是最需要关注的,可快速判断端口是否正常提供服务、是否有异常连接。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快