Mac 系統 Port 號被佔用的解決方式

前言

開發系統時可能會出現一種狀況,也就是 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 就不會發生佔用了。

Liker 讚賞

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

Google AD

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