使用特定埠查詢程序的PID


簡介

在Linux世界中,程序對於使軟體程式高效執行起著至關重要的作用。計算機系統上的每個正在執行的應用程式或任務都會分配一個獨特的程序標識號(PID),作為唯一識別符號,以將其與系統上執行的任何其他活動程序區分開來。同樣,計算機系統中的每個網路連線都與一個特定的埠號相關聯,這有助於識別資料傳輸的源和目的地。在某些情況下,可能需要查詢正在使用特定埠的程序的PID。本文將討論在Linux作業系統中識別使用特定埠的程序的程序標識號(PID)的不同技術。

使用root使用者獲取詳細資訊

只有root使用者才能在Linux中獲取程序的詳細資訊。

$ sudo su
[sudo] password for papan: Enter your own password

現在您已以root使用者身份登入Linux。如果您想退出root使用者,只需鍵入“exit”。

使用Netstat進行網路故障排除

Netstat是一個命令列工具,用於在Linux系統中顯示活動的網路連線和相關的統計資訊。它是一個強大而通用的實用程式,提供有關係統網路活動的詳細資訊,使其成為網路故障排除和分析的寶貴工具。

要使用'netstat',請開啟終端視窗並輸入以下命令。

$ netstat -ltnup 
Active Internet connections (only servers)
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   689/systemd-resolve 
tcp       0         0    127.0.0.1:631    0.0.0.0:*    LISTEN       754/cupsd           
tcp6      0         0       ::1:631         :::*       LISTEN       754/cupsd  
udp       0         0    127.0.0.53:53    0.0.0.0:*             689/systemd-resolve 
udp       0         0     0.0.0.0:5353    0.0.0.0:*             746/avahi-daemon: r 
udp       0         0      0.0.0.0:631    0.0.0.0:*               856/cups-browsed    
udp       0         0    0.0.0.0:36761    0.0.0.0:*              746/avahi-daemon: r 
udp6      0         0       :::5353         :::*                 746/avahi-daemon: r 
udp6      0         0       :::40743        :::*                 746/avahi-daemon: r     

以下是命令各個部分的細分:

  • 'netstat' − 這是主命令,用於顯示與網路相關的的資訊。

  • '-l' − 此選項用於僅顯示監聽套接字。這意味著該命令將僅顯示正在監聽傳入連線的活動連線。

  • '-t' − 此選項用於僅顯示TCP連線。這意味著該命令將僅顯示活動的TCP連線。

  • '-n' − 此選項用於以數字形式顯示IP地址和埠號,而不是將其解析為主機和服務名稱。

  • '-u' − 此選項用於僅顯示UDP連線。這意味著該命令將僅顯示活動的UDP連線。

  • '-p' − 此選項用於顯示正在使用連線的PID和程序名稱。

因此,完整的命令'netstat -ltnup'將顯示系統上所有正在監聽的活動TCP和UDP連線的列表,以及它們的IP地址和埠號,以及正在使用連線的程序標識號(PID)和程序名稱。此命令可用於解決與網路相關的問題,並識別哪些程序正在使用特定的網路埠。

讓我們以一個埠為例,以便更好地理解。

$  netstat -ltnup | grep ':36761'           
udp		0        0.0.0.0:36761        0.0.0.0:*      746/avahi-daemon: r

使用ss Linux實用程式命令

ss命令是一個Linux實用程式,提供有關活動網路連線的詳細資訊。要查詢使用特定埠的程序的PID,可以使用以下命令:

$  ss -ltnup 'sport = :36761'

Netid  State  Recv-Q  Send-Q  Local Address:Port  Peer Address:Port               Process             
udp   UNCONN   0         0     0.0.0.0:36761          0.0.0.0:*  users:(("avahi-daemon",pid=746,fd=14))

使用lsof命令

lsof命令(“列出開啟的檔案”的縮寫)是一個強大的Linux實用程式,允許使用者檢索有關開啟的檔案(包括網路連線)的資訊。要查詢使用特定埠的程序的PID,可以使用以下命令:

$ lsof -i :36761

COMMAND    PID    USER      FD      TYPE      DEVICE      SIZE/OFF      NODE          NAME
avahi-dae  746    avahi    14u      IPv4      39187         0t0         UDP         *:36761

使用fuser命令

fuser命令是一個Linux實用程式,允許使用者識別正在使用特定檔案或目錄的程序。要查詢使用特定埠的程序的PID,可以使用以下命令:

$ fuser 36761/udp

36761/udp:             746

另一個使用fuser命令的示例。

$ fuser 5353/udp

5353/udp:             746

我們可以將“-v”選項傳遞給fuser命令以檢視有關埠的更多詳細資訊。

$ fuser -v 36761/udp
				USER             PID ACCESS COMMAND
36761/udp:  	avahi          746 F.... avahi-daemon

我們可以使用fuser命令同時獲取有關TCP或UDP埠上多個正在執行的程序的資訊。

$ fuser -v 36761/udp  631/tcp

	        USER                                PID ACCESS COMMAND
36761/udp:	avahi                             746 F.... avahi-daemon
631/tcp:	root                                 754 F.... cupsd   

退出root使用者

如果您想退出root使用者,只需鍵入“exit”。

root@ubuntu:/home/papan# exit
exit
papan@ubuntu:~$

結論

總之,使用特定埠的程序的PID是解決Linux中網路相關問題的必要資訊。本文概述了可用於確定在Linux作業系統中使用特定埠的程序的程序標識號(PID)的各種技術。每種方法都有其優點和缺點,使用者可以選擇最適合其需求的方法。透過使用這些方法,使用者可以輕鬆識別負責特定網路連線的程序,並採取適當的措施來解決任何問題。

更新於:2023年3月29日

6K+ 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告