当前位置: 首页 > news >正文

解决MacOS端口被占用问题

目录

    • 一、检查端口占用情况
      • 方法一:使用 `lsof` 命令
      • 方法二:使用 `netstat` 命令
    • 二、终止占用端口的进程
      • 方法一:使用 `kill` 命令
      • 方法二:通过 Activity Monitor 图形界面
    • 三、设置应用程序使用其他端口
      • 示例:修改 Spring Boot 应用的端口
      • 示例:修改 Node.js 应用的端口
    • 四、释放端口后启动应用程序
    • 五、常见问题解答
      • 1. 如果不知道端口被哪个进程占用怎么办?
      • 2. 终止进程后,是否会影响其他正在运行的应用程序?
      • 3. 如何查看所有正在监听的端口?
    • 六、总结

在使用 MacOS 进行开发或运行某些应用程序时,经常会遇到端口被占用的问题。例如,当你尝试启动一个本地开发服务器时,可能会看到类似 “Address already in use” 的错误提示。本文将为你详细讲解如何快速定位并解决 MacOS 端口被占用的问题。

一、检查端口占用情况

当遇到端口被占用的问题时,首先需要确定是哪个进程占用了目标端口。以下是几种常用的检查方法:

方法一:使用 lsof 命令

lsof 是一个功能强大的命令行工具,用于列出当前系统打开的文件和网络连接等信息。通过 lsof,我们可以快速找到占用特定端口的进程:

sudo lsof -i :<port>

<port> 替换为你想要检查的端口号,例如 8080。执行命令后,你会看到类似以下的输出:

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

从输出中可以看到,进程 ID(PID)为 12345java 进程正在占用 8080 端口。

方法二:使用 netstat 命令

netstat 是另一个常用的网络工具,可以显示网络连接、路由表、接口统计等信息。使用以下命令检查端口占用情况:

sudo netstat -vanp tcp | grep LISTEN

或者,如果需要检查特定端口:

sudo netstat -vanp tcp | grep <port>

同样,将 <port> 替换为目标端口号。输出结果会显示占用该端口的进程信息。

二、终止占用端口的进程

确定了占用端口的进程后,可以使用以下方法终止该进程:

方法一:使用 kill 命令

使用 kill 命令终止进程:

kill -9 <PID>

<PID> 替换为占用端口的进程 ID。例如:

kill -9 12345

该命令会强制终止 PID 为 12345 的进程,从而释放被占用的端口。

方法二:通过 Activity Monitor 图形界面

如果你更倾向于使用图形界面,可以打开 MacOS 的 “Activity Monitor”(活动监视器)来查找并终止进程:

  1. 打开 “Finder”,在顶部菜单栏中选择 “前往”->“实用工具”,然后点击 “活动监视器”。
  2. 在 “活动监视器” 窗口中,切换到 “CPU” 选项卡。
  3. 搜索(根据进程名或 PID)找到占用端口的进程。
  4. 选中该进程,然后点击窗口左上角的 “X” 按钮,选择 “强制退出” 来终止进程。

三、设置应用程序使用其他端口

如果不想终止正在占用端口的进程,可以考虑修改应用程序的配置,使其使用其他未被占用的端口。

示例:修改 Spring Boot 应用的端口

在 Spring Boot 项目中,可以通过修改 application.properties 文件来更改应用的端口:

server.port=8081

或者在 application.yml 文件中:

server:port: 8081

修改后,重新启动应用程序,它将使用新的端口(如 8081)运行。

示例:修改 Node.js 应用的端口

对于 Node.js 应用,修改启动文件中的端口监听代码:

const server = app.listen(8081, () => {console.log('Server is running on port 8081');
});

重新启动应用后,它将监听新的端口。

四、释放端口后启动应用程序

终止占用端口的进程或修改应用程序的端口后,再次启动你的应用程序。如果一切顺利,应用程序将能够成功绑定到目标端口并正常运行。

五、常见问题解答

1. 如果不知道端口被哪个进程占用怎么办?

使用上述的 lsofnetstat 命令,可以帮助你快速定位占用端口的进程信息。通过查看命令输出中的进程名和 PID,可以确定是哪个应用程序占用了端口。

2. 终止进程后,是否会影响其他正在运行的应用程序?

终止一个进程可能会对其他依赖该进程的应用程序产生影响。因此,在终止进程之前,确保了解该进程的作用,并评估可能的影响。如果是系统关键进程,谨慎操作,避免影响系统稳定性。

3. 如何查看所有正在监听的端口?

可以使用以下命令查看所有正在监听的端口:

sudo lsof -i -P -n | grep LISTEN

该命令会列出所有处于监听状态的端口及其对应的进程信息。

六、总结

通过本文介绍的方法,你可以轻松解决 MacOS 端口被占用的问题。无论是通过命令行工具快速定位并终止进程,还是修改应用程序的配置以使用其他端口,都能有效地帮助你恢复正常的工作流程。在日常开发中,掌握这些技巧可以大大提高你的工作效率,让你不再为端口冲突问题烦恼。

相关文章:

  • 安卓基础(接口interface)
  • 高压场景首选:CKESC ROCK 120A-H CAN 电调技术解析与实测报告
  • 51c大模型~合集122
  • 第十六节:开放性问题-Vue与React Hooks对比
  • vue3:v-model的原理示例
  • ISO-C99标准 最小限定值
  • 驱动开发硬核特训 │ Regulator 子系统全解
  • IDEA2022.3开启热部署
  • 【React Native】精通 react native
  • 假云阴影模拟
  • 数字孪生三维建模+虚拟仿真,构建可预测的未来工厂
  • QT采用mqtt进行通信(17.1)
  • 小波变换和图像的融合
  • 征程 6 逆向自证 hbm 与 bc 一致性
  • Spring系列五:手动实现Spring底层机制 第一部分
  • 在 Conda 中,包的安装路径在电脑的哪里
  • SwiftUI 10.Toggle介绍和使用
  • 无人设备遥控器之实时数据保护技术篇
  • 60、微服务保姆教程(三)Sentinel---高可用流量管理框架/服务容错组件
  • 新时代下的存储过程开发实践与优化
  • 黄晓丹:用“诗心”找到生存的意义
  • 一张老照片里蕴含的上海文脉
  • 加拿大温哥华发生驾车冲撞人群事件,加拿大总理发声
  • 这些被低估的降血压运动,每天几分钟就管用
  • 子公司神州信息十年来首次亏损,神州控股遭国有股东广州城投派驻董事问责
  • “爱泼斯坦案”关键证人弗吉尼亚·朱弗雷自杀身亡