Skip to content

[Linux] 如何確認端口(port)已經被使用?

Last Updated on 2023-03-23 by Clay

問題描述

我們通常都會在 Linux 伺服器上啟動各式各樣的服務,最常見的就是開一個網頁、開放一個端口(port)來讓我們或使用者測試開發中的功能。

無論如何,只要使用到 port,總是難免得衝突的情況。最常見的例子就是,假設今天我選定了 8888 這個 port 來開啟我的服務,然後哎呀,糟糕不妙,我的程式出了 BUG,系統瞬間死掉。這時候我們可能只能使用 kill 指令把整個程式終止。

接著,問題來了:有一種情況是我們雖然終止了服務,但是 port 卻被額外分出去的行程調用了!我們在跑一次我們的服務,就會發現 Error: port is already in use 之類的情況。

所以我們需要能夠查看,當前究竟有哪些 port 我們正在使用呢?這就是本篇筆記的重點。


解決方法

以下是幾種在 Linux 系統上檢查端口是否被佔用的方法:

方法 1:使用 netstat 命令

netstat(網絡統計)是一個常用的命令行工具,用於顯示網絡連接、路由表和網絡接口統計。要使用 netstat 檢查被佔用的 port,可以使用以下命令:

netstat -tuln | grep <port_number>


這將列出所有正在使用指定 port 的程序。


方法 2:使用 lsof 命令

lsof(List Open Files)是一個用於列出系統上當前打開的文件的實用程序。要使用 lsof 檢查被佔用的 port,可以使用以下命令:

lsof -i :<port_number>

這是我最常使用的顯示正在被使用的 port 的指令,畢竟跟 ls 很像,所以我專門記著它 XD


方法 3:使用 ss 命令

ss(Socket Statistics)是一個用於獲取有關套接字統計信息的命令行工具。要使用 ss 檢查被佔用的端口,可以使用以下命令:

ss -tuln | grep <port_number>


這個指令倒是同事告訴我的,因為是 ss 所以也很好記。


References


Read More

Tags:

Leave a Reply