目 录CONTENT

文章目录
Mac

mac查找端口对应文件

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

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

1. 先确定端口占用情况

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

# 或使用 macOS 的 netstat(BSD 版本)
sudo netstat -anv | grep LISTEN | grep :端口号

# 替代方案:sockstat
sockstat -4 -l | grep :端口号

2. 获取进程信息

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

COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
python3.1 14251  zzy    3u  IPv4 0x...      0t0  TCP localhost:irdmi (LISTEN)

注意:macOS 的 lsof 输出中,同名进程会显示为 程序名.数字(如 python3.1),这是进程标记,不是版本号。

3. 定位进程工作目录

# 查看进程启动信息(macOS 无 /proc)
ps -p PID -o pid,command,args

# 查看进程当前目录(macOS 方法)
sudo lsof -p PID | grep cwd

# 如果安装了 procps
pwdx PID

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

4. 查找项目文件

# 获取工作目录并进入(macOS 方法)
cd $(sudo lsof -p PID 2>/dev/null | grep cwd | awk '{print $NF}')

# 查看启动命令(macOS 方法)
ps -p PID -o args=

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

5. 服务管理工具查询

# launchd 服务(macOS 的服务管理器)
launchctl list | grep PID
sudo launchctl procinfo PID

# 查看 launchd 服务文件位置
find /Library/LaunchDaemons /Library/LaunchAgents ~/Library/LaunchAgents -name "*.plist" -exec grep -l "端口号" {} \;

6. 容器化应用

# Docker 容器(与 Linux 相同)
docker ps | grep :端口号
docker inspect 容器ID | grep -A 10 Mounts

# Podman(如果安装)
podman ps --format "table {{.ID}}\t{{.Ports}}"

7. 常用组合命令

# 一键查询(端口→PID→位置)- macOS 版本
port=8000
pid=$(lsof -ti:$port) && echo "PID: $pid" && sudo lsof -p $pid | grep cwd

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

8. macOS 特有命令

# 网络质量工具(macOS 12+)
networkQuality -v

# 系统配置工具
scutil --net

# 活动监视器命令行
top -l 1 -o port | grep "端口号"

注意事项

  1. 需要 root 权限查看其他用户进程
  2. macOS 没有 /proc 文件系统,不能使用 Linux 的 /proc/PID/ 相关命令
  3. macOS 的 netstat 是 BSD 版本,参数与 Linux 不同(-p 需要参数)
  4. 容器端口可能经过 NAT 映射
  5. 某些应用动态绑定端口,需查看配置文件
  6. 可结合 pgreppstree 辅助排查(需安装:brew install procps pstree

安装缺失的 Linux 工具

# 通过 Homebrew 安装常用工具
brew install net-tools    # 安装 Linux 风格的 netstat
brew install procps       # 安装 pgrep, pwdx, pmap 等
brew install pstree       # 安装进程树查看工具
brew install lsof         # lsof 通常已内置,但可更新

# 使用安装后的工具(路径可能不同)
/opt/homebrew/bin/netstat -tlnp | grep :端口号

快速参考表

功能 Linux 命令 macOS 命令
查看端口 ss -lntp lsof -i
查看进程目录 ls -l /proc/PID/cwd lsof -p PID | grep cwd
查看进程命令 cat /proc/PID/cmdline ps -p PID -o args=
进程环境变量 cat /proc/PID/environ 无直接等价物
服务管理 systemctl launchctl

核心区别:macOS 使用 lsof 替代 Linux 的 /proc 文件系统来获取进程信息。

0

评论区