如何在命令行中查看某个特定端口的所有连接状态?
美国、香港服务器
如何在命令行中查看某个特定端口的所有连接状态?
02-14 来源:
在命令行中查看某个特定端口的全部连接状态(包括监听、活跃连接、来源 IP、进程关联等),我给你分层查询的实用命令,从基础到详细,覆盖所有核心信息,复制就能执行,适配所有 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 无连接(无此输出则端口无连接)
二、进阶版:看连接状态 + 占用进程(知道 “谁占用 + 谁连接”)
如果想同时看到「占用端口的进程」和「连接状态」,补充-p参数即可:
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 正在连接。
三、完整版:一键查全所有连接信息(含统计)
把连接状态、进程、数量统计整合,复制即可一键查询(替换 8888 为目标端口):
bash
运行
#!/bin/bash
PORT=8888
echo "===== 端口$PORT 所有连接状态 ====="
ss -tan | grep -w ":$PORT"
echo -e "\n===== 连接状态统计 ====="
ss -tan | grep -w ":$PORT" | awk "{print $1}" | sort | uniq -c
echo -e "\n===== 连接+进程详情 ====="
ss -tanp | grep -w ":$PORT"
使用方法:
保存为check_port_conn.sh;
执行chmod +x check_port_conn.sh;
执行./check_port_conn.sh,直接看到:
所有连接的状态和来源 IP;
各状态的连接数量(比如多少个活跃连接);
占用端口的进程信息。
四、备用命令(兼容极旧系统)
若服务器没有ss命令(极少情况),用传统netstat,用法完全一致:
bash
运行
# 基础查看连接状态
netstat -tan | grep -w ":8888"
# 查看连接+进程
netstat -tanp | grep -w ":8888"
总结
基础查看所有连接状态:ss -tan | grep -w ":端口号"(首选);
查看状态 + 进程:ss -tanp | grep -w ":端口号";
统计状态数量:ss -tan | grep -w ":端口号" | awk "{print $1}" | sort | uniq -c;
核心关注LISTEN(端口是否正常监听)和ESTAB(是否有异常 IP 连接),可快速排查端口访问问题。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快