如何检查 Linux 上哪个程序正在使用端口
问题:我的程序无法绑定到特定端口号,因为它被另一个我不知道的程序/进程使用。有什么方法可以检查 Linux 上哪个程序/进程当前正在使用特定端口号?
您可以使用 lsof 命令检测哪个进程绑定到哪个端口号。只需使用 -i:
选项指定您感兴趣的端口号即可。
例如,要找出哪些进程正在打开端口号631
,请运行以下命令。
$ sudo lsof -i:631 -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
cupsd 776 root 10u IPv6 9353 0t0 TCP [::1]:631 (LISTEN)
cupsd 776 root 11u IPv4 9354 0t0 TCP 127.0.0.1:631 (LISTEN)
cups-brow 953 root 8u IPv4 9930 0t0 UDP *:631
其中,-n
选项禁止将主机IP地址自动转换为主机名,-P
选项禁止将端口号转换为端口名。在此示例中,cupsd
和 cups-brow
进程分别使用 TCP 和 UDP 端口号 631
。
要查看所有打开的 TCP 端口及其关联程序/进程的列表,您可以运行以下命令。
$ sudo lsof -i -n -P | grep TCP
