Mac 系統 Port 號被佔用的解決方式(Mac Port xxx is already in use)

前言

開發系統時可能會出現一種狀況,也就是 Port 被佔用,因此會出現類似這種訊息「Port 5000 is already in use」,所以就寫一篇來紀錄一下如何解決 Port 被佔用的問題。

查看 Port

首先當你發現伺服器跟你說「Port xxxx is already in use」的時候,你可以打開終端機,試著輸入以下指令查看 Port 是不是真的被佔用

(xxxx 替換成你被佔用的 Port)

1
lsof -i:xxxx

例如我查詢 5000 Port 的狀況

1
lsof -i:5000

lsof

畫面上可以看到有以下欄位

  • COMMAND
  • PID
  • USER
  • FD
  • TYPE
  • DEVICE
  • SIZE/OFF
  • NODE
  • NAME

你只需要特別注意兩個東西,也就是 COMMANDPID

如果你無法輸入 lsof -i:xxxx 的話,你可以試著加上 sudo

1
sudo lsof -i:5000

透過上圖中的 COMMAND 我們可以知道是 Node 在佔用 Port,因此你可以試著翻一下是不是哪一個視窗忘記中止了。

如果你想要看全部有被使用的 Port 的話,則輸入以下

1
lsof -n -i

停止/釋放/清除 Port

如果你真的找不到這個啟動來源時,你可以試著輸入 kill PID 來清除被佔用的 Port。

以剛剛的範例圖來講

lsof

我們可以看到 PID 是 19625,因此就輸入以下指令即可

1
kill 19625

輸入完畢後你並不會得到任何回饋

kill

但是你再去輸入一次 lsof -i:5000 就會發現沒有任何東西回應給你哩。

lsof

如果你有開著 Server 終端機的話,或許會發現 Server 終端機噴出這個訊息「[1] 19624 terminated npm start」囉~

無法被釋放的 5000 Port

Mac 有一個特有的問題,就是 5000 Port 會被莫名其妙佔用,而且這個佔用也很機車,你不管怎麼 kill 都會長出來

無法釋放的 5000 Port

這個問題主要是出在 Mac 控制中心有一個東西佔用了 5000 Port

解決方式

首先先開啟「系統偏好設定」,然後在上方搜尋「共享」

共享

接下來進入到共享後,找到「Airplay 接收器」欄位,然後取消打勾即可

Airplay

接下來再去查 lsof -i:5000 就不會發生佔用了~

2023 更新解決方式

由於後來 Mac 系統有更新一版,把整個 UI 介面更新,所以我們要找的地方也有所變動。

首先先開啟「系統偏好設定」,然後在上方搜尋「AirPlay 接收器」

AirPlay

接下來進入到 AirPlay 接收器後,找到「AirPlay 接收器」欄位,然後取消打勾即可

AirPlay

Liker 讚賞

這篇文章如果對你有幫助,你可以花 30 秒登入 LikeCoin 並點擊下方拍手按鈕(最多五下)免費支持與牡蠣鼓勵我。
或者你可以也可以請我「喝一杯咖啡(Donate)」。

Buy Me A Coffee Buy Me A Coffee

Google AD

撰寫一篇文章其實真的很花時間,如果你願意「關閉 Adblock (廣告阻擋器)」來支持我的話,我會非常感謝你 ヽ(・∀・)ノ