Debian:检查进程正在监听的端口号

众所周知,端口一次只能由一个进程或服务使用。端口标识系统上运行的特定服务或进程。在某些情况下,在进行故障排除期间,您需要知道特定进程正在侦听的端口号。系统上运行的每个进程都与一个进程标识号(PID)和端口号相关联。本文可以通过多种方式帮助您找出特定进程正在侦听的端口号。

在继续本文之前,请确保您具有root特权。帮助获取有关系统上运行的进程的全面信息。

请注意,我们正在使用Debian 10来执行本文中提到的命令和过程。

方法1:使用netstat命令

Netstat是最常用的命令行实用程序,可用于显示有关网络连接,接口统计信息和路由表的信息。它也可以用来查找特定进程使用的端口号。不需要安装它,因为它已经安装在所有Linux发行版的存储库中。但是,如果尚未将其安装在系统上,请使用以下命令进行安装。

$ sudo apt install net-tools

要查找进程正在侦听的端口号,请在终端中运行以下命令:

$ sudo netstat -ltnp

以下输出显示特定进程使用的端口号及其进程ID(PID)。

使用netstat命令检查端口

如果您没有sudo特权,并且在没有sudo的情况下运行上述命令,则将看不到程序名称和PID,如以下输出所示。

没有sudo的netstat有限视图

现在让我们看看 ltnp 上面的命令具有以下含义。

l –显示监听套接字

t –显示TCP连接

n –以数字格式显示IP地址和端口号

p –显示PID /程序名称

如果查看$ sudo netstat -ltnp的输出,则第四列正是我们要查找的内容:进程正在侦听的端口号。

要获取单个进程的端口信息,只需使用grep命令通过管道将netstat输出。

例如,要查找“ sshd”的端口号,请使用以下命令:

$ sudo netstat –ltnp | grep ‘sshd’

检查sshd端口

同样,如果要查找在特定端口(例如端口21)上侦听的进程名称,请使用以下命令:

$ sudo netstat -ltnp | grep -w ':21'

通过端口号检查过程

方法2:使用lsof命令

您可以使用lsof命令查看系统上运行的进程打开的所有文件的列表。 Lsof可以用作检索信息的单一来源。否则,您将需要大量的管理工具。与netstat命令一样,您需要sudo特权才能获取更多信息。

如果您的系统上尚未安装lsof,请在终端中使用以下命令进行安装。

$ sudo apt install lsof

安装lsof

安装完成后,您可以使用lsof实用工具来查找特定端口上正在运行的进程。运行不带参数的lsof实用程序会返回很多难以理解的信息。但是,您可以在lsof中使用参数来过滤和聚焦所需的输出。

然后使用以下命令找出哪个进程正在侦听特定端口(例如端口22):

$ sudo lsof -i :22

此命令返回端口22上运行的所有进程。

使用lsof命令检查端口

方法3:使用fuser命令

fuser是一个Linux命令,用于查找使用文件,目录或文件系统的进程ID。您可以使用此命令来找出特定端口上正在运行的进程。

必须使用psmisc实用程序才能使用fuser命令。如果尚未将其安装在系统上,请运行以下命令进行安装。

$ sudo apt install psmisc

安装psmisc软件包

要查看在任何端口(例如TCP端口22)上运行的进程,请在终端中运行以下命令。

$ sudo fuser 22/tcp

定影器命令

上面的命令返回了一个监听端口号22的进程。要显示任何进程ID的进程名称,请使用以下命令语法。

$ ps -p [processID] -o comm=

就我们而言

$ ps -p [5859] -o comm=

使用ps检查端口

从上面的输出中,您可以找到进程ID 5859的进程名称sshd。这意味着进程ID为5859的sshd正在侦听端口22。

在本文中,您学习了一些命令行实用程序,可用于查看特定进程正在侦听的端口。

Debian:检查进程正在监听的端口号

Sidebar