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
所以也很好記。