macOS 解决端口占用并自动释放端口脚本

发表于 2025-09-14 15:02:01 分类于 默认分类 阅读量 44

macOS 解决端口占用并自动释放端口脚本

在 macOS 开发过程中,经常会遇到端口被占用的情况(例如 808033065173 等),如果不解决,服务就无法正常启动。本文总结了常用的解决方法,并提供一个自动释放端口的小脚本,方便日常开发使用。


1. 手动解决端口占用

1.1 查找占用端口的进程

8080 为例:

lsof -i :8080

示例输出:

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    12345 xxx   200u  IPv6 0xabcdef1234567890      0t0  TCP *:http-alt (LISTEN)

可以看到是进程 PID=12345 占用了端口 8080


1.2 结束进程

kill -9 12345

也可以一步到位:

kill -9 $(lsof -t -i :8080)

1.3 确认端口是否释放

再次检查:

lsof -i :8080

如果没有输出,说明端口已释放。


2. 自动释放端口脚本

频繁手动执行太麻烦,可以写一个脚本自动化。

2.1 创建脚本文件

新建脚本:

nano ~/killport.sh

写入以下内容:

#!/bin/bash
# 自动释放指定端口
# 用法: ./killport.sh 8080

if [ -z "$1" ]; then
  echo "❌ 请输入端口号,例如: ./killport.sh 8080"
  exit 1
fi

PORT=$1
PID=$(lsof -t -i :$PORT)

if [ -z "$PID" ]; then
  echo "✅ 端口 $PORT 没有被占用"
else
  echo "⚠️ 端口 $PORT 被进程 $PID 占用,正在结束..."
  kill -9 $PID
  echo "✅ 端口 $PORT 已释放"
fi

2.2 赋予执行权限

chmod +x ~/killport.sh

2.3 使用方式

直接运行脚本并传入端口号:

~/killport.sh 8080

效果:

  • 如果端口空闲 → 提示未占用
  • 如果端口被占用 → 自动 kill 掉进程并释放端口

3. 可选:添加到全局命令

如果经常用,可以把脚本加入 PATH,方便全局使用:

echo 'export PATH=$PATH:~' >> ~/.zshrc
source ~/.zshrc

之后就可以直接运行:

killport.sh 8080

4. 总结

  • 手动方式:lsof -i :端口号 + kill -9 PID
  • 自动方式:编写 killport.sh 脚本,一键释放端口
  • 可选:配置到全局命令,随时使用

这样在 macOS 开发时,再也不用担心端口被占用了 🚀

正物博客
一路向前,山海自平