使用特定端口查找进程的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+ 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告