[特殊字符] Mac 高效排查:使用 lsof 查找和管理端口占用进程

💻 Mac 高效排查:使用 lsof 查找和管理端口占用进程

在进行 Web 开发、服务器配置或运行新应用时,我们经常会遇到"端口被占用"的错误。在 macOS 系统上,最强大且最高效的命令行工具是 lsof (List Open Files)。

本文将详细指导您如何使用 lsof 快速查找占用特定端口的进程(以 5001、5002、5003 为例),并提供后续管理进程的完整解决方案。


🔍 第一步:快速查询端口占用情况

打开您的 终端 (Terminal) 应用程序,并输入以下命令。一条命令即可同时查询多个端口的状态:

Bash

复制代码
lsof -i :5001 -i :5002 -i :5003

命令解析

  • lsof: List Open Files,列出系统中打开的文件。
  • -i: 筛选网络文件(Internet file)。
  • :端口号: 指定要筛选的端口号。
sh 复制代码
lsof -i :5001 -i :5002 -i :5003
COMMAND PID       USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Python  240 liuxiaowei    3u  IPv4 0xb9e70756a661c098      0t0  TCP *:commplex-link (LISTEN)

📊 输出结果解读

命令执行后,如果端口被占用,您会看到类似下表的输出。如果某个端口没有任何输出,则表示该端口当前没有被占用

端口 (NAME) 进程状态 (COMMAND) 进程 ID (PID) 用户 (USER) 状态 (STATE)
5001 Python 240 yourname LISTEN
5002 无输出 - - ❌ (端口空闲)
5003 无输出 - - ❌ (端口空闲)
关键信息点:
  • COMMAND 和 PID :这是最关键的信息。它告诉您是哪个应用程序(COMMAND)以及它的唯一进程 ID(PID)占用了该端口。
  • STATE (LISTEN):表示该进程正在该端口上处于"监听"状态,等待传入的连接。

⚙️ 第二步:处理和管理占用进程

查看到进程信息后,您可以根据自己的需要,选择是否终止该进程。

1. 🛑 终止占用端口的进程

确认要结束该进程后,可以使用查到的 PID 来终止它。

Bash

复制代码
kill PID

例如,要结束 PID 为 240 的进程:

Bash

复制代码
kill 240

💡 温馨提示:

  1. 首选柔和关闭 (kill PID)kill 命令(默认发送 SIGTERM 信号)会请求程序自行退出,给程序一个清理资源的机会。

  2. 强制关闭 (kill -9 PID) :如果程序无响应,可以使用 -9 强制终止(发送 SIGKILL 信号)。这是立即、强制的,可能导致数据丢失或损坏。请谨慎使用

    Bash

    复制代码
    kill -9 240

2. 🛡️ 以管理员身份查看(权限不足时)

如果您执行 lsof 命令后发现没有输出,或者提示权限不足,可能是因为占用端口的进程是以系统级权限运行的。此时,您需要使用 sudo 以管理员身份运行命令。

Bash

复制代码
sudo lsof -i :5001 -i :5002

执行此命令后,系统会要求您输入用户密码。


💡 扩展与替代方案

1. 查看所有监听端口

如果想概览本机上所有正在等待连接(监听)的网络端口,可以使用 netstat 命令:

Bash

复制代码
netstat -anp tcp | grep LISTEN

2. 使用图形化工具

对于不习惯使用命令行的用户,macOS 自带的 活动监视器 (Activity Monitor) 也是一个有用的工具:

  1. 打开 活动监视器(位于 /Applications/Utilities/)。
  2. 切换到 网络 标签页。
  3. 通过查看列表中的"端口"或使用搜索栏,您可以找到相关的网络连接和进程信息。

3. 专用于查找 PID 的简化命令

如果您只想知道某个端口的 PID,并将其直接用于 kill 命令,可以组合使用 lsofawk

Bash

复制代码
lsof -t -i :5001 # -t 仅列出 PID

总结来说,在 Mac 上管理端口占用的核心操作就是利用 lsof -i :端口号 在采取任何 kill 操作之前,请务必通过 COMMAND 列确认进程用途,避免误关重要的系统进程或正在运行的重要应用。

相关推荐
pe7er1 天前
macOS 应用无法打开(权限问题)解决方案
macos·mac
DianSan_ERP3 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅3 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
2501_946205524 天前
晶圆机器人双臂怎么选型?适配2-12寸晶圆的末端效应器有哪些?
服务器·网络·机器人
linux kernel4 天前
第七部分:高级IO
服务器·网络
数字护盾(和中)4 天前
BAS+ATT&CK:企业主动防御的黄金组合
服务器·网络·数据库
~远在太平洋~4 天前
Debian系统如何删除多余的kernel
linux·网络·debian
unfeeling_4 天前
Keepalived实验
linux·服务器·网络
坐吃山猪4 天前
OpenClaw04_Gateway常见问题
网络·gateway·openclaw
上海云盾商务经理杨杨4 天前
2025年重大网络安全事件回顾与趋势分析
网络·安全·web安全