查找使用特定端口的进程的 PID

linuxoperating systemopen source更新于 2026/2/7 8:22:17

简介

在 Linux 世界中,进程在确保软件程序高效运行方面发挥着至关重要的作用。计算机系统上每个正在运行的应用程序或任务都会被分配一个不同的进程标识号 (PID),该标识符可将其与同一系统上运行的任何其他活动进程区分开来。同样,计算机系统中的每个网络连接都与一个特定的端口号相关联,该端口号有助于识别数据传输的来源和目的地。在某些情况下,可能需要查找正在使用特定端口的进程的 PID。本文将讨论在 Linux 操作系统中识别使用特定端口的进程的进程标识号 (PID) 的不同技术。

使用 root 用户获取详细信息

root 用户只能获取 Linux 中进程的详细信息。

$ sudo su
[sudo] password for papan: 输入您自己的密码

现在您已以 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) 的各种技术。每种方法都有其优缺点,用户可以根据自身需求选择最合适的方法。通过使用这些方法,用户可以轻松识别负责特定网络连接的进程,并采取适当的措施来解决任何问题。


相关文章


有用资源