Pre

端口是代表通信端点的逻辑实体,并与操作系统中的给定进程或服务相关联。在之前的文章中,我们解释了如何找出 Linux 中所有开放端口的列表,以及如何使用 Netcat 命令检查远程端口是否可达。

在这个简短的指南中,我们将展示在 Linux 中查找侦听特定端口的进程/服务的不同方法。

使用netstat命令

netstat(网络统计)命令用于显示有关网络连接、路由表、接口统计等的信息。它适用于所有类 Unix 操作系统,包括 Linux 以及 Windows 操作系统。

如果系统没有默认安装它,请使用以下命令进行安装。

$ sudo apt-get install net-tools    [On Debian/Ubuntu & Mint] 
$ sudo dnf install net-tools        [On CentOS/RHEL/Fedora and Rocky Linux/AlmaLinux]
$ pacman -S netstat-nat             [On Arch Linux]
$ emerge sys-apps/net-tools         [On Gentoo]
$ sudo dnf install net-tools        [On Fedora]
$ sudo zypper install net-tools     [On openSUSE]

安装后,可以将其与 grep 命令一起使用,以查找在 Linux 中侦听特定端口的进程或服务,如下所示(指定端口)。

$ netstat -ltnp | grep -w ':80'

监控linux端口号的延迟 linux端口跟踪_ubuntu


在上面的命令中,标志。

l – 告诉 netstat 只显示侦听套接字。
t – 告诉它显示 tcp 连接。
n – 指示它显示数字地址。
p – 启用进程 ID 和进程名称的显示。
grep -w – 显示精确字符串的匹配 (:80)。
注意:netstat 命令在某些 Linux发行版本中已被弃用并被现代的 ss 命令取代。

使用lsof命令

lsof 命令(List Open Files)用于列出 Linux 系统上所有打开的文件。

要在linux系统上安装它,请键入以下命令。

$ sudo apt-get install lsof     [On Debian, Ubuntu and Mint]
$ sudo yum install lsof         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/lsof  [On Gentoo Linux]
$ sudo pacman -S lsof           [On Arch Linux]
$ sudo zypper install lsof      [On OpenSUSE]

要查找侦听特定端口的进程/服务,请键入(指定端口)。

$ sudo lsof -i :80
COMMAND     PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
apache2 2109359     root    4u  IPv6 21371208      0t0  TCP *:http (LISTEN)
apache2 3445098 www-data    4u  IPv6 21371208      0t0  TCP *:http (LISTEN)
apache2 3445099 www-data    4u  IPv6 21371208      0t0  TCP *:http (LISTEN)
apache2 3445100 www-data    4u  IPv6 21371208      0t0  TCP *:http (LISTEN)
apache2 3445101 www-data    4u  IPv6 21371208      0t0  TCP *:http (LISTEN)
apache2 3445102 www-data    4u  IPv6 21371208      0t0  TCP *:http (LISTEN)

使用fuser命令

这个命令稍微冷门写,一般人都没用过。
fuser 命令显示在 Linux 中使用指定文件或文件系统的进程的 PID。

可以按如下方式安装它:

$ sudo apt-get install psmisc     [On Debian, Ubuntu and Mint]
$ sudo yum install psmisc         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/psmisc  [On Gentoo Linux]
$ sudo pacman -S psmisc           [On Arch Linux]
$ sudo zypper install psmisc      [On OpenSUSE]

你可以通过运行以下命令(指定端口)找到在特定端口上侦听的进程/服务。

$ sudo fuser 80/tcp
80/tcp:              2109359 3445098 3445099 3445100 3445101 3445102

$ sudo fuser 8000/tcp
8000/tcp:            2113624 2113631

然后像这样使用 ps 命令使用 PID 号查找进程名称。

$ ps -p 2109359 -o comm=
apache2

我所知道的常用办法就是这样了,有同行是否知道在 Linux 中查找侦听特定端口的进程/服务的任何其他方法,欢迎通过下面的评论区告诉我们。