如何在命令行中查看某个特定端口的详细信息?
美国、香港服务器
如何在命令行中查看某个特定端口的详细信息?
02-13 来源:
在命令行中查看某个特定端口的完整详细信息(包括占用进程、连接状态、IP 来源、进程路径等),我给你一套分层查询的方法,从基础的端口占用到深层的进程详情,新手也能一步步查到所有关键信息,适配所有 Linux 系统。
一、基础查询:快速看端口占用(必用)
先定位端口的核心信息(是否被占用、哪个进程占用),用ss命令(首选)或netstat,精准筛选目标端口:
bash
运行
# 查看指定端口(以8888为例)的基础信息(进程名、PID、监听状态)
ss -tulnp | grep -w ":8888"
参数说明:
-w:精准匹配端口号(避免匹配到 88880、18888 等相似端口);
输出示例(8888 端口):
plaintext
LISTEN 0 128 0.0.0.0:8888 0.0.0.0:* users:(("bt-panel",pid=1234,fd=8))
能看到:8888 端口处于监听状态,被 PID 为 1234 的bt-panel(宝塔面板)进程占用。
如果服务器没有ss,用备用命令:
bash
运行
netstat -tulnp | grep -w ":8888"
二、进阶查询:查端口的所有连接详情
如果想知道这个端口有哪些外部 IP 在连接、连接状态是什么(比如是否有异常访问),用以下命令:
bash
运行
# 查看指定端口(8888)的所有连接(含来源IP、连接状态)
ss -tan | grep -w ":8888"
输出示例:
plaintext
ESTAB 0 0 192.168.1.100:8888 203.0.113.50:54321
LISTEN 0 128 0.0.0.0:8888 0.0.0.0:*
状态解读:
LISTEN:端口监听中(正常提供服务);
ESTAB:已建立连接(比如 203.0.113.50 正在访问 8888 端口);
TIME-WAIT:连接刚断开,处于等待状态。
三、深层查询:查占用端口的进程完整信息
知道 PID 后,进一步查这个进程的路径、启动用户、占用资源等核心详情(排查异常端口必备):
bash
运行
# 第一步:先查端口对应的PID(以8888为例,替换成你的端口)
PID=$(ss -tulnp | grep -w ":8888" | awk -F"," "{print $2}" | awk -F"=" "{print $2}" | awk "{print $1}")
# 第二步:查该PID的完整进程信息(路径、启动命令、用户)
ps -ef | grep $PID
# 第三步:查进程的可执行文件路径(确认是否为合法程序)
ls -l /proc/$PID/exe
输出示例:
plaintext
# ps -ef输出(进程详情)
root 1234 1 0 10:00 ? 00:00:05 /www/server/panel/BTPanel.py
# ls -l输出(进程路径)
lrwxrwxrwx 1 root root 0 Jan 1 10:00 /proc/1234/exe -> /usr/bin/python3
能确认:8888 端口的进程是宝塔面板的合法 Python 程序,路径为/www/server/panel/BTPanel.py,排除恶意进程占用的可能。
四、终极查询:查端口的防火墙 / 安全组规则
如果端口不通,还能查该端口是否被防火墙拦截:
bash
运行
# 查看指定端口(8888)的iptables规则
iptables -L INPUT -n --line-numbers | grep ":8888"
# CentOS 7+查看firewalld规则
firewall-cmd --list-rich-rules | grep 8888
输出示例:
plaintext
1 ACCEPT tcp -- 192.168.1.0/24 0.0.0.0/0 tcp dpt:8888
2 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8888
能看到:8888 端口仅允许 192.168.1.0/24 网段访问,其他 IP 被拒绝。
五、一键查询脚本(复制即用)
把以上步骤整合成脚本,替换端口号即可一键查全信息(以 8888 为例):
bash
运行
#!/bin/bash
# 替换成你要查询的端口
PORT=8888
echo "===== 端口$PORT 基础占用信息 ====="
ss -tulnp | grep -w ":$PORT"
echo -e "\n===== 端口$PORT 所有连接信息 ====="
ss -tan | grep -w ":$PORT"
echo -e "\n===== 占用进程完整信息 ====="
PID=$(ss -tulnp | grep -w ":$PORT" | awk -F"," "{print $2}" | awk -F"=" "{print $2}" | awk "{print $1}")
if [ -n "$PID" ]; then
ps -ef | grep $PID | grep -v grep
echo -e "\n进程可执行文件路径:"
ls -l /proc/$PID/exe 2>/dev/null
else
echo "端口$PORT 未被占用"
fi
echo -e "\n===== 端口$PORT 防火墙规则 ====="
iptables -L INPUT -n --line-numbers | grep ":$PORT" 2>/dev/null
使用方法:
把脚本保存为check_port.sh;
执行chmod +x check_port.sh;
执行./check_port.sh,即可看到 8888 端口的所有详细信息。
总结
基础信息:ss -tulnp | grep -w ":端口号"(查占用进程);
连接信息:ss -tan | grep -w ":端口号"(查访问 IP 和状态);
进程详情:先查 PID,再用ps -ef和/proc/PID/exe查进程路径;
防火墙规则:iptables -L INPUT -n --line-numbers | grep ":端口号";
一键查询:用整合脚本可快速获取所有信息,适合排查端口异常。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快