目 录CONTENT

文章目录

Linux查找端口对应项目位置方法

~梓
2026-02-09 / 0 评论 / 0 点赞 / 2 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Linux 下查找端口对应项目位置的方法

1. 先确定端口占用情况

# 查看指定端口占用
sudo lsof -i :端口号

# 或使用 netstat
sudo netstat -tlnp | grep :端口号

# ss 命令(较新系统推荐)
sudo ss -lntp | grep :端口号

2. 获取进程信息

命令输出会显示 PID(进程ID)和程序名,例如:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    12345   app   123u  IPv6 456789      0t0  TCP *:8080 (LISTEN)

3. 定位进程工作目录

# 查看进程启动信息
sudo cat /proc/PID/environ | tr '\0' '\n' | grep -E "PWD|HOME"

# 直接查看进程当前目录(符号链接)
sudo ls -l /proc/PID/cwd

# 查看进程详细信息
sudo ps -fp PID

4. 查找项目文件

# 进入进程工作目录
cd $(sudo readlink /proc/PID/cwd)

# 查看启动命令(从 /proc 中获取)
sudo cat /proc/PID/cmdline | tr '\0' ' '

# 查找配置文件(常见模式)
find . -name "*.yml" -o -name "*.yaml" -o -name "*.properties" -o -name "*.conf"

5. 服务管理工具查询

# systemd 服务
systemctl status PID
sudo systemctl status | grep 端口号

# 查看服务文件位置
systemctl show --property=FragmentPath 服务名

6. 容器化应用

# Docker 容器
docker ps | grep :端口号
docker inspect 容器ID | grep -A 10 Mounts

# Podman
podman ps --format "table {{.ID}}\t{{.Ports}}"

7. 常用组合命令

# 一键查询(端口→PID→位置)
sudo ss -lntp | grep :8080 | awk '{print $NF}' | cut -d= -f2 | xargs sudo ls -l /proc/*/cwd 2>/dev/null

# 生成端口占用报告
sudo lsof -i -P -n | grep LISTEN | awk '{printf "端口:%s PID:%s 程序:%s\n", $9, $2, $1}' | sort

注意事项

  1. 需要 root 权限查看其他用户进程
  2. 容器端口可能经过 NAT 映射
  3. 某些应用动态绑定端口,需查看配置文件
  4. 可结合 pgreppstree 辅助排查

简化脚本

创建 /usr/local/bin/find-port

#!/bin/bash
[ -z "$1" ] && echo "用法: find-port 端口号" && exit 1
echo "检查端口 $1 ..."
pid=$(sudo lsof -ti:$1)
[ -z "$pid" ] && echo "端口未使用" && exit 0
echo "PID: $pid"
echo "工作目录:"
sudo ls -l /proc/$pid/cwd 2>/dev/null || echo "无法访问"
0

评论区