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