如何查看端口占用的进程路径?
美国、香港服务器
如何查看端口占用的进程路径?
02-13 来源:
查看服务器中占用某个端口的进程的实际可执行文件路径(核心是通过端口找到 PID,再通过 PID 定位进程路径),我给你两步极简法,直接复制命令就能查到,适配所有 Linux 系统(CentOS/Debian/Ubuntu),新手也能秒会。
一、核心步骤:先找 PID,再查路径
步骤 1:通过端口号获取进程 PID(以 8888 端口为例)
先执行命令找到占用目标端口的进程 PID,这是定位路径的关键:
bash
运行
# 替换8888为你要查询的端口号
PID=$(ss -tulnp | grep -w ":8888" | awk -F"," "{print $2}" | awk -F"=" "{print $2}" | awk "{print $1}")
# 验证PID是否获取成功(可选)
echo "占用8888端口的进程PID是:$PID"
参数说明:-w 确保精准匹配端口号(避免匹配 88880、18888 等相似端口);
若输出为空,说明该端口未被占用;若有数字输出(比如 1234),就是进程 PID。
备用命令(若 ss 命令不可用):
bash
运行
PID=$(netstat -tulnp | grep -w ":8888" | awk "{print $7}" | awk -F"/" "{print $1}")
步骤 2:通过 PID 查询进程的实际路径
拿到 PID 后,执行以下命令直接获取进程的可执行文件路径:
bash
运行
# 替换$PID为具体数字(比如1234)也可直接执行
ls -l /proc/$PID/exe
输出示例(8888 端口为宝塔面板):
plaintext
lrwxrwxrwx 1 root root 0 Feb 13 10:00 /proc/1234/exe -> /usr/bin/python3
箭头 -> 后的路径就是进程的实际可执行文件路径(这里是 Python3 解释器,因为宝塔面板基于 Python 运行);
若提示 “没有那个文件或目录”,说明进程已退出,或 PID 无效。
二、一键查询脚本(复制即用)
把以上两步整合成脚本,替换端口号即可一键查到路径,无需分步操作:
bash
运行
#!/bin/bash
# 替换这里的端口号为你要查询的端口(比如22、3306、80)
PORT=8888
# 第一步:获取PID
PID=$(ss -tulnp | grep -w ":$PORT" | awk -F"," "{print $2}" | awk -F"=" "{print $2}" | awk "{print $1}")
# 第二步:判断并输出结果
if [ -z "$PID" ]; then
echo "端口$PORT 未被任何进程占用"
else
echo "占用端口$PORT 的进程PID:$PID"
echo "进程可执行文件路径:"
ls -l /proc/$PID/exe 2>/dev/null || echo "无法获取路径(进程可能已退出)"
# 额外输出进程的启动命令(可选,辅助确认)
echo -e "\n进程启动命令:"
cat /proc/$PID/cmdline 2>/dev/null | tr "\0" " "
fi
使用方法:
把脚本保存为 check_port_path.sh;
执行 chmod +x check_port_path.sh 赋予执行权限;
执行 ./check_port_path.sh,直接看到端口、PID、路径、启动命令。
三、补充:查看进程的工作目录(可选)
若想知道进程运行时的工作目录(而非可执行文件路径),执行:
bash
运行
# 替换1234为实际PID
pwdx 1234
输出示例:
plaintext
1234: /www/server/panel
表示该进程的工作目录在宝塔面板的安装目录下。
总结
查端口占用进程路径的核心逻辑:端口 → PID → /proc/PID/exe;
一键脚本可直接获取端口、PID、路径、启动命令,适合快速排查;
/proc/$PID/exe 是 Linux 系统定位进程实际路径的核心文件,必须用 root 用户执行才能查看;
若路径显示为 Python/Java 等解释器,说明该端口由脚本 / 程序运行,可通过/proc/$PID/cmdline查看具体启动命令。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快