您是否遇到過需要停止在 Linux 機器上特定端口上運行的進程的情況?
您可能擔心正在運行的應用程序運行不正常或占用了您的網絡資源或本地 CPU 能力。這樣的應用程序甚至可能是您想要消除的安全威脅。
目錄
無論是什麼原因,您都可以從終端使用 fuser、lsof 和 netstat 命令(連同 kill)來幫助您找到並終止任何使用端口號的 Linux 進程。這些命令適用於大多數 Linux 操作系統,包括 Ubuntu。
如何使用 fuser 命令終止 Linux 進程
使用端口號終止進程的最簡單方法之一是使用定影命令。這個 Linux 終端命令可以列出或終止訪問文件或套接字的進程。如果應用程序運行時有網絡活動(因此使用開放端口),它可能正在做這兩件事之一。
在繼續之前,您需要確保您能夠在 Linux PC 上輕鬆使用命令行終端。
要使用 fuser 列出正在使用端口號的進程,您可以使用以下語法:
fuser-n protocol port
在這個例子中,protocol 可以是tcp 或udp,而port 是你要查看的端口號。例如,要查看哪些進程正在使用 TCP 端口 80,您可以運行:
fuser-n tcp 80
這將打印使用該端口的進程的進程 ID (PID)港口。
要終止這些進程,您可以將-k 選項添加到 fuser。這將向每個進程發送一個 SIGTERM 信號,要求它們正常終止。例如:
fuser-k-n tcp 80
這將殺死所有使用 TCP 端口 80 的進程。
如果某些進程不響應 SIGTERM ,您可以使用-KILL 而不是-k。這將發送一個終止信號 (SIGKILL),這有助於強制您已識別的當前正在運行的進程立即終止。但是,這可能會導致數據丟失或損壞,因此請謹慎使用。例如:
fuser-KILL-n tcp 80
這將強制終止所有使用 TCP 端口 80 的進程。如果遇到任何問題,請以超級用戶身份(使用 sudo 命令)或使用 root 用戶運行這些命令。
如何使用 lsof 命令終止 Linux 進程
在 Linux PC 上使用端口號終止進程的另一種方法是使用 lsof 命令。此命令可以列出系統上打開的文件和套接字。
要列出使用特定端口號的進程,您可以使用以下語法:
lsof-i protocol:port
和前面一樣,protocol 可以是 tcp 或 udp,而 port 是你要檢查的端口號。例如,要查看哪些進程正在使用 TCP 端口 53(通常用於 DNS 請求),您可以運行此命令:
lsof-i tcp:53
這將打印一些有關使用該端口的每個進程的信息,包括其 PID。
要終止這些進程,您可以在 lsof 中使用-t 選項。這將只打印進程的 PID,而沒有任何其他信息。然後,您可以使用任何信號選項將此輸出通過管道傳輸到 kill 命令。例如:
kill $(lsof-t-i tcp:53)
這將向所有使用 TCP 端口 53 的進程發送 SIGTERM 信號(默認)。
如果某些進程沒有像以前那樣響應SIGTERM信號,你可以在kill後使用-9而不是nothing。這將像以前一樣發送 SIGKILL 信號,迫使它們立即終止,但也可能導致數據丟失或損壞。例如:
kill-9 $(lsof-t-i tcp:53)
這將強制向所有使用 TCP 端口 53 的進程發送 SIGKILL 信號(默認)。
如何使用 netstat 命令終止 Linux 進程
您還可以使用 netstat 命令跟踪 Linux PC 上使用活動和開放網絡端口的正在運行的進程。 netstat 可讓您查看系統上的網絡連接和統計信息,從而查明有問題的進程。
要列出使用端口號的進程及其 PID,您需要添加兩個選項:-p,顯示 PID,-l,僅顯示偵聽套接字。
您還需要指定協議(tcp、udp 等)並可選擇按狀態(LISTEN 等)進行過濾。例如,要查看哪些 TCP 進程在任何端口上偵聽,您可以運行:
netstat-p tcp-l </p>
這將打印有關在任何端口上偵聽的每個 TCP 套接字的信息,包括它的 PID。
要按特定端口過濾,您必須添加另一個選項:-n,它顯示數字地址而不是名稱。您還需要指定確切的地址格式:[protocol][@hostname|hostaddr][:service|port]。
例如,要查看哪些 TCP 進程正在偵聽端口 80,您可以運行:
netstat-p tcp-l-n 80
這將打印有關偵聽端口 8080 的每個 TCP 套接字的信息,包括其 PID。
要終止這些進程,您可以使用 kill 命令和您想要的任何信號選項以及您從 netstat 獲得的 PID。例如:
kill 1234 5678
這將向 PID 為 1234 和 5678 的進程發送 SIGTERM 信號(默認)。
如果某些進程不這樣做像以前一樣響應 SIGTERM 信號,您可以在 kill 後使用-9 而不是什麼都沒有。這將像以前一樣發送 SIGKILL 信號,迫使它們立即終止,但可能會像以前一樣導致數據丟失或損壞。例如:
kill-9 1234 5678
例如,這將強制向 PID 為 1234 和 5678 的進程發送 SIGKILL 信號。將 1234 替換為您正在運行的進程的正確 PID。
控制您的 Linux 應用程序
由於上面列出的步驟,您可以使用 Linux 使用端口號快速終止正在運行的 Linux 進程命令行。記住在終止進程時要小心,尤其是使用 SIGKILL 信號時,因為它們可能會導致不需要的副作用——畢竟你不想導致系統不穩定。
想更仔細地查看您的系統在 Linux 上的性能嗎?接下來您可能想檢查 Linux 上的內存使用情況。如果您擔心潛在的安全風險,您可能還想在 Linux 上更改密碼。
需要切換到新的 Linux 發行版?如果您是初學者,請將 Linux Mint 視為安全穩定的替代品。