如何清除系統上被佔用的Port?
相信各位在 Server 系統上常會發生這個問題,常常要啟動某個 Port 時會出現無法監聽的情況,為什麼會這樣?原因在於可能先前你的執行環境中有執行監聽此 Port 號並無正確的釋放,例如程式 Crash 或是拋出例外 ……等,所以發生此問題時先查詢該 Port 所佔用的排程序號(PID),再以這個序號清除資源就能解決此問題了。
- 查詢 PID
// 查詢 Port:3000 狀態
sudo netstat -lpn |grep 3000
在終端機輸入此指令後應該會出現下列格式資訊,其中 14230 為你的 PID。
tcp6 0 0 :::3000 :::* LISTEN 14320/.node.bin
- 清除 PID
使用 kill + PID 就能將此排程從背景釋放,就能解決 Port 被佔用的問題了!
kill 14230
補充
有時候若背景還在執行中無法順利地透過 kill 完整終止服務,可以使用附加引數強制終止。可以使用 kill -l
列出所有可以用的方法。
kill [options] [process_ids]
下面是常用的指令:
- HUP 1 終端斷線
- INT 2 中斷(同 Ctrl + C)
- QUIT 3 退出(同 Ctrl + \)
- TERM 15 終止
- KILL 9 強制終止
- STOP 19 暫停(同 Ctrl + Z)
假設要立刻強制停止程式執行可以輸入(後面PID自行填入要被終止的程序的ID)。
kill -9 PID
版主10在2020年首次開設YouTube頻道,嘗試拍攝程式教學。想要了解更多的朋友歡迎關注我的頻道,您的訂閱就是最大的支持~如果想學其他什麼內容也歡迎許願XD
https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A
https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A