Mac下端口被占用的解决方式

本文介绍如何使用终端命令检查被占用的端口号及其对应的进程ID,并提供了解决方案,即如何终止占用特定端口的进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开终端:
查看端口号的进城情况:    sudo lsof -i tcp:port
     port : 你所被占用的端口号  例如8080
kill掉被占用的端口的进程: kill PID

     每一个进程都会有一个PID


### 解决27000端口占用的方法 当遇到端口占用的情况时,可以通过一系列操作来释放该端口。以下是针对不同操作系统环境的具体解决方法。 #### Mac 和 Linux 系统下的解决方案 1. **确认端口是否被占用** 使用 `netstat` 或 `lsof` 命令可以检查特定端口的状态。 ```bash netstat -anp | grep 27000 ``` 如果返回结果显示 `LISTEN`,则说明该端口已被某个进程绑定[^2]。 另一种方式是使用 `lsof` 查看具体占用情况: ```bash lsof -i:27000 ``` 2. **获取占用端口的进程 ID (PID)** 上述命令会返回类似如下信息: ``` COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python 1234 user 3u IPv4 0xabcdefg 0t0 TCP *:27000 (LISTEN) ``` 这里的 `PID` 即为占用端口的进程号[^2]。 3. **终止占用端口的进程** 获取到 PID 后,可以直接通过 `kill` 命令结束对应进程: ```bash kill -9 1234 ``` 此处假设 PID 是 `1234`,实际应替换为你查得的真实值[^2]。 #### Windows 系统下的解决方案 1. **打开命令提示符并检测端口状态** 在 Windows 中按下组合键 `Win + R` 打开运行窗口,输入 `cmd` 并回车进入命令行界面。接着执行以下指令查询端口占用详情: ```cmd netstat -ano | findstr :27000 ``` 2. **提取对应的 PID** 输出结果可能类似于这样: ``` TCP 0.0.0.0:27000 0.0.0.0:0 LISTENING 5678 ``` 其中的最后一列数值就是目标进程编号(PID),这里例子中为 `5678`[^1]。 3. **强制停止关联的任务** 利用之前取得的 PID 来清除冲突的服务项: ```cmd taskkill /pid 5678 /f ``` 完成以上步骤后重新尝试启动 Docker MySQL 容器或其他依赖此端口的应用程序应该就不会再碰到 “address already in use” 的错误消息了。 ```python import os def release_port(port_number, system='linux'): """ Function to automate releasing a given port on either Linux or Windows systems. Args: port_number (int): The number of the port you want to free up. system (str): Specify 'linux' for Unix-like OSes and 'win' for Microsoft ones. Returns: str: Confirmation message after attempting to clear out any processes using specified port. """ try: if system.lower() == 'linux': pid_info = os.popen(f"lsof -ti:{port_number}").read().strip() if pid_info.isdigit(): os.system(f"kill -9 {pid_info}") return f"Successfully killed process with PID={pid_info}. Port {port_number} should now be available." else: raise ValueError("No active PIDs found.") elif system.lower() == 'win': cmd_output = os.popen(f"netstat -ano | findstr :{port_number}").readlines() pids = [] for line in cmd_output: parts = line.split() if len(parts)>4 and parts[-1].isdigit(): pids.append(parts[-1]) success_messages = [] failure_messages = [] for pid in set(pids): result=os.system(f'taskkill /pid {pid} /f') if not result: success_messages.append(pid) else: failure_messages.append(pid) msg="" if success_messages: msg+=f"Succesfully terminated tasks associated with these PIDs: {', '.join(success_messages)}. " if failure_messages: msg+="Failed terminating some tasks due possibly permissions issues etc.: "+", ".join(failure_messages)+"." return msg else: return "Unsupported operating system type provided." except Exception as e: return f"An error occurred while trying to release port {port_number}: {e}" print(release_port(27000)) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶孤心丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值