📅  最后修改于: 2023-12-03 15:23:01.366000             🧑  作者: Mango
当我们需要运行一个服务时,需要确定该服务要使用哪个端口进行通信。当使用端口80时,需要查找哪个服务正在使用这个端口。因为端口80是Http协议使用的默认端口,很可能会有多个服务在使用这个端口。那怎么查找呢?可以使用命令行工具来查找,下面是一些方法。
使用lsof命令来查找哪个服务正在使用80端口。lsof是一个列出当前系统打开的文件的工具,也可以查找正在使用的端口。以下是使用lsof查找服务的方法:
sudo lsof -i :80
执行该命令后,会列出使用80端口的服务的详细信息,包括服务的名称、PID等等。如下所示:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 13531 root 4u IPv6 139883 0t0 TCP *:http (LISTEN)
httpd 13532 apache 4u IPv6 139883 0t0 TCP *:http (LISTEN)
httpd 13533 apache 4u IPv6 139883 0t0 TCP *:http (LISTEN)
这里我们可以看到,80端口被Apache服务(httpd)占用了。
另一个查找服务的工具是netstat命令。netstat用于查看网络连接状态和统计信息,也可以查找正在使用的端口。以下是使用netstat查找服务的方法:
sudo netstat -an | grep :80 | grep LISTEN
执行该命令后,会列出使用80端口的服务的详细信息,包括服务的地址、状态等等。如下所示:
tcp6 0 0 :::80 :::* LISTEN
这里我们可以看到,80端口被一个服务(状态为LISTEN)占用了。如果服务的名称没有被列出来,可以通过查看服务的PID来确定该服务的名称,如下所示:
sudo ps -ef | grep PID
fuser命令也可以用来查找正在使用的端口。以下是使用fuser查找服务的方法:
sudo fuser 80/tcp
执行该命令后,会列出使用80端口的服务的详细信息,包括服务的PID等等。如下所示:
80/tcp: 13531 13532 13533
这里我们可以看到,80端口被进程号为13531、13532和13533的服务占用了。
通过以上三种方法,我们可以很方便地查找哪个服务正在使用端口80,以便我们进行相关操作。