使用特定埠查詢程序的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)的各種技術。每種方法都有其優點和缺點,使用者可以選擇最適合其需求的方法。透過使用這些方法,使用者可以輕鬆識別負責特定網路連線的程序,並採取適當的措施來解決任何問題。