查找使用特定端口的进程的 PID
简介
在 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) 的各种技术。每种方法都有其优缺点,用户可以根据自身需求选择最合适的方法。通过使用这些方法,用户可以轻松识别负责特定网络连接的进程,并采取适当的措施来解决任何问题。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

