当前位置:首页 > 行业动态 > 正文

linux如何查看80端口被哪个进程占用了

可以使用以下命令查看80端口被哪个进程占用了:,,“ ,sudo lsof -i :80 | grep LISTEN,“

在Linux系统中,端口是进程间通信的一种方式,每个进程都有一个或多个端口与之关联,用于接收和发送数据,当我们在浏览器中访问一个网站时,实际上是通过HTTP协议与服务器的某个端口进行通信,了解如何查看80端口被哪个进程占用,对于排查网络问题和系统故障非常有帮助。

本文将介绍如何在Linux系统中查看80端口被哪个进程占用的方法。

1. 使用lsof命令

lsof(list open files)是一个列出当前系统打开文件的工具,我们可以使用它来查看哪些进程正在使用某个端口,要查看80端口被哪个进程占用,可以使用以下命令:

sudo lsof i :80

执行该命令后,你将看到类似以下的输出:

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   12345 wwwdata    7u  IPv4  12345      0t0  TCP *:http (LISTEN)
nginx   12346 wwwdata    7u  IPv4  12346      0t0  TCP *:http (LISTEN)

从输出中可以看出,有两个名为nginx的进程正在监听80端口,PID为12345的进程是主进程,PID为12346的进程是工作进程。

2. 使用netstat命令

netstat(network statistics)是一个显示网络状态的命令,我们可以使用它来查看哪些进程正在使用某个端口,要查看80端口被哪个进程占用,可以使用以下命令:

sudo netstat tuln | grep :80

执行该命令后,你将看到类似以下的输出:

tcp        0      0 0.0.0.0:http         0.0.0.0:*               LISTEN      off (12345/nginx)
tcp        0      0 0.0.0.0:http         0.0.0.0:*               LISTEN      off (12346/nginx)

从输出中可以看出,有两个名为nginx的进程正在监听80端口,PID为12345的进程是主进程,PID为12346的进程是工作进程。

3. 使用ss命令

ss(socket statistics)是一个显示套接字统计信息的命令,我们可以使用它来查看哪些进程正在使用某个端口,要查看80端口被哪个进程占用,可以使用以下命令:

sudo ss tuln | grep :80

执行该命令后,你将看到类似以下的输出:

LISTEN     0      128                 *:http                  *:*                    users:(("nginx",pid=12345,fd=7),("nginx",pid=12346,fd=7))

从输出中可以看出,有两个名为nginx的进程正在监听80端口,PID为12345的进程是主进程,PID为12346的进程是工作进程。

4. 使用top命令

top命令可以实时显示系统中各个进程的资源占用情况,我们可以使用它来查看哪些进程正在使用某个端口,要查看80端口被哪个进程占用,可以在终端中输入top命令,然后按下Shift + F9键,切换到“内存”视图,接着按下Shift + F7键,切换到“按CPU使用率排序”视图,最后按下Shift + F8键,切换到“按内存使用率排序”视图,此时,你将看到类似以下的输出:

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                           12345 wwwdata  20   0  12345   7896   6564 S    0.3  0.1   0:15.69 httpd                                                                                            12346 wwwdata  20   0  12346   7896   6564 S    0.3  0.1   0:15.69 httpd                                                                                             1 root      20   0       0      0      0 S    0.0  0.0   0:01.29 systemdjournal                                                                               1 root      20   0       0      0      0 S    0.0  0.0   0:03.75 kthreadd                                                                                           ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

从输出中可以看出,有两个名为httpd的进程正在监听80端口,PID为12345的进程是主进程,PID为12346的进程是工作进程,这两个进程可能是Nginx服务器的组件。

相关问题与解答

问题1:为什么在lsof命令的输出中,有的主进程的PID比工作进程的PID小?

解答:这可能是因为主进程在启动时创建了工作进程,所以它的PID会比工作进程小,但这并不影响它们之间的关联关系,我们可以通过查看其他信息(如COMMAND列)来判断它们之间的关系。

问题2:为什么在netstat和ss命令的输出中,没有显示进程的名称?

解答:这是因为这些命令默认不显示进程的名称,如果需要显示进程的名称,可以使用p选项或者结合grep命令来实现。sudo netstat tuln | grep ':80' | grep 'nginx'。

问题3:为什么在top命令的输出中,有些进程的名称是数字?

0