---
title: "Mac 上出現「Address already in use」：找出占用連接埠的程序 · Kilobat 指南"
url: "https://kilobat.app/zh-hant/guides/port-already-in-use.html"
description: "當開發伺服器顯示位址已在使用中時，用 lsof 找出監聽該連接埠的程序，然後停止它或改用其他連接埠。"
---

開發者

# Mac 上的連接埠已被占用

一個 TCP 連接埠和位址只能有一個程序監聽。第二個伺服器就會停止並顯示「address already in use」。

適用於：所有目前的 macOS 版本。 · 檢查日期：2026年10月29日

## 症狀

- 開發伺服器停止並顯示「EADDRINUSE」或「address already in use」。
- Docker 因「port is already allocated」而無法發布連接埠。
- 在當機或重新啟動編輯器之前，這個連接埠還沒被占用。

## 可能原因

- **伺服器的舊副本。**先前執行的伺服器仍在背景執行。
- **其他 App。**另一個 App 使用相同的連接埠。在 macOS 12 及以上版本中，「AirPlay 接收器」會使用連接埠 5000 和 7000。
- **容器。**執行中的容器在 Mac 上發布了相同的連接埠。

## 如何檢查

1. 找出監聽該連接埠的程序。將 3000 換成你的連接埠。

   ```
   lsof -nP -iTCP:3000 -sTCP:LISTEN
   ```

   輸出 COMMAND 和 PID 欄位會指出該程序。
2. 若要查看其他使用者的程序，請用 sudo 執行相同的指令。

   ```
   sudo lsof -nP -iTCP:3000 -sTCP:LISTEN
   ```

   需要管理者密碼。
3. 顯示該程序的更多資訊。

   ```
   ps -p 12345 -o pid,command
   ```
4. 尋找發布該連接埠的容器。

   ```
   docker ps
   ```

## 如何修正

1. 如果是你自己的程序，請在它所在的「終端機」視窗中按 Control-C 停止。
2. 否則，請傳送終止訊號給它，並使用它的 PID。

   ```
   kill 12345
   ```
3. 如果它沒有停止，請使用 `kill -9`。程序將無法儲存資料。
4. 如果該程序屬於 macOS，不要停止它。請為你的伺服器選擇其他連接埠。
5. 如果連接埠是 5000 或 7000，請閱讀「[Mac 上的連接埠 5000 或 7000 被占用：AirPlay 接收器](https://kilobat.app/zh-hant/guides/airplay-receiver-port-5000.html)」。

## 使用 Kilobat

1. 列出單一程序開啟的通訊端。

   ```
   kilobat destinations --pid 12345
   ```
2. 依 PID 結束程序。只有在它沒有停止時才加上 `--force`。

   ```
   kilobat quit 12345
   ```

## 常見問題

**為什麼 lsof 沒有顯示任何結果，連接埠卻被占用？**

lsof 只會顯示你有權限檢查的程序。用 sudo 執行即可查看所有程序。

**-n 和 -P 有什麼作用？**

它們會讓 lsof 不將位址轉換為名稱、不將連接埠轉換為服務名稱。輸出速度更快，並以數字顯示。

## 資料來源

- lsof(8)，macOS 27.2 內建的 man 頁面
- kill(1) 和 ps(1)，macOS 27.2 內建的 man 頁面
- [Apple 支援：Apple 軟體產品使用的 TCP 和 UDP 連接埠](https://support.apple.com/en-us/103229)

資料來源檢查日期：2026年10月29日。man 頁面為 macOS 內建版本；在終端機中用 `man <name>` 開啟。

## 相關指南

- [Mac 上的連接埠 5000 或 7000 被占用：AirPlay 接收器](https://kilobat.app/zh-hant/guides/airplay-receiver-port-5000.html): Apple 將 TCP 連接埠 5000 和 7000 列為 AirPlay 使用的連接埠。
- [無法從 Mac 連到 Docker 容器](https://kilobat.app/zh-hant/guides/docker-container-from-mac.html): Mac 上的 Docker 會在 Linux 虛擬機器中執行容器。
- [容器無法連到 Mac 上的 localhost](https://kilobat.app/zh-hant/guides/localhost-from-container.html): 每個容器都有自己的網路堆疊。
- [在 Mac 上找出哪個 App 占用頻寬](https://kilobat.app/zh-hant/guides/which-app-uses-bandwidth.html): 「活動監視器」和 nettop 會顯示哪些程序在傳送和接收資料。
