[特殊字符] 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 列确认进程用途,避免误关重要的系统进程或正在运行的重要应用。

相关推荐
jenchoi4131 小时前
【2025-11-30】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·安全·web安全·网络安全·npm
Evan芙1 小时前
Rocky Linux 9 双网卡 bond0 绑定
linux·服务器·网络
weixin_307779131 小时前
Jenkins Bootstrap 5 API插件:现代化Jenkins界面的开发利器
开发语言·前端·网络·bootstrap·jenkins
2501_915909061 小时前
如何防止 IPA 被反编译,从攻防视角构建一套真正有效的 iOS 成品保护体系
android·macos·ios·小程序·uni-app·cocoa·iphone
init_23611 小时前
【BGP入门专题-6】bgp联盟与路由优选规则
网络
-曾牛1 小时前
渗透测试信息收集全流程:从被动探测到主动挖掘
网络·安全·web安全·渗透测试·信息收集·原理解析·信息挖掘
麦麦鸡腿堡1 小时前
Java_网络上传文件与netstat指令
java·服务器·网络
Web3VentureView1 小时前
Synbo 产品发布会在吉隆坡举行:重构 Web3 一级市场融资模式
网络·人工智能·重构·web3·区块链·synbo
khatung1 小时前
借助Electron打通平台与用户通知(macOS系统)
前端·javascript·vscode·react.js·macos·electron·前端框架