2021-05-12 14:32:11
Linux下找出進程正在偵聽的埠號
作為Linux使用者,我們有時需要知道特定進程正在偵聽哪個埠號。 所有埠都與OS中的進程ID或服務相關聯。 那我們怎麼找到那個港口? 本文介紹了三種不同的方法,供您查詢進程正在偵聽的埠號。
我們在Ubuntu 18.04 LTS/Ubuntu 18.10系統上執行了本文中描述的命令和過程。
方法1:使用netstat命令
Netstat或網路統計實用程式用於檢視與網路連線相關的資訊。 這包括有關介面統計資訊,路由表等資訊。 此實用程式在大多數Linux系統上都可用,因此我們可以使用它來檢視有關某些進程在系統上使用哪些埠的資訊。
要使用netstat命令,您需要安裝net-tools實用程式(如果它尚未通過以下命令安裝在您的系統上):
linuxidc@linuxidc:~/桌面/www.linuxidc.com$ sudo apt install net-tools
然後執行以下命令:
linuxidc@linuxidc:~/桌面/www.linuxidc.com$ sudo netstat -ltnp
啟用Internet連線 (僅伺服器)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 537/systemd-resolve
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 772/cupsd
tcp6 0 0 :::21 :::* LISTEN 732/vsftpd
tcp6 0 0 ::1:631 :::* LISTEN 772/cupsd
以上命令基於以下功能提供netstat資訊:
l:只顯示監聽通訊端
t:顯示tcp連線
n:以數位形式顯示地址
p:顯示進程ID /程式名稱
例如,在netstat命令的上述輸出中,進程ID為 732的vsftpd程式在埠號21上執行。
您還可以通過將grep函數合併到命令中來過濾特定埠的統計資訊。
例:
linuxidc@linuxidc:~/桌面/www.linuxidc.com$ sudo netstat -ltnp | grep -w ':21'
tcp6 0 0 :::21 :::* LISTEN 732/vsftpd
方法2:使用lsof命令
lsof或開啟檔案列表實用程式有助於列出Linux系統上的所有開啟檔案。 我們可以使用此實用程式檢視特定埠上開啟的所有進程。
要使用lsof命令,如果已通過以下命令在系統上未安裝lsof實用程式,則需要安裝它:
linuxidc@linuxidc:~/桌面/www.linuxidc.com$ sudo apt install lsof
讓我們使用lsof來檢視在特定埠上偵聽的服務。
例:
linuxidc@linuxidc:~/桌面/www.linuxidc.com$ sudo lsof -i :21
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vsftpd 732 root 3u IPv6 27550 0t0 TCP *:ftp (LISTEN)
此命令將列出使用TCP埠號21的所有進程。
方法3:使用fuser命令
fuser命令顯示使用命名檔案,通訊端或檔案系統的進程ID。 我們可以使用此命令檢視在特定TCP埠上執行的進程ID。
要使用fuser命令,您需要安裝psmisc實用程式(如果它已經未通過以下命令安裝在您的系統上):
linuxidc@linuxidc:~/桌面/www.linuxidc.com$ sudo apt install psmisc
您可以在此命令中指定任何埠號以檢視其偵聽進程。
使用fuser命令
linuxidc@linuxidc:~/桌面/www.linuxidc.com$ sudo fuser 21/tcp
21/tcp: 732
在上面的輸出中,您可以看到進程ID 732正在偵聽TCP 21。
要檢視此進程ID對應的程式,請執行以下命令:
語法:
$ ps -p [processID] -o comm=
我們執行以下命令測試:
linuxidc@linuxidc:~/桌面/www.linuxidc.com$ ps -p 732 -o comm=
vsftpd
輸出顯示進程ID 732對應於程式名稱vsftpd。 因此,程式vsftpd的進程ID 732正在偵聽埠號21。
通過本文中學到的三種方法,您可以輕鬆檢視Linux上特定進程正在偵聽的TCP埠。
相關文章