记一次在 Linux 中根据端口号查找进程的经历

前言 不久之前,我接手了一套服务器集群,这个集群由一个登录节点和多个计算节点组成,其中登录节点可以通过外网访问,而计算节点只能通过登录节点跳板访问。 拿到手,我最先做的便是探查一下这个集群的网络架构,而在我排查过程中,我发现登录节点 80 端口上开了一个 HTTP 访问,是用于计算节点资源管理的后台管理平台,不足为奇。 但是我有点好奇,想看一下这个 80 端口运行的那个服务是哪个进程管理的,顺便也能看一下这个管理平台是如何搭建起来的。 然后,按照运维的惯例,执行以下几个命令来查找对应进程: lsof -i :80 netstat -tlnup | grep :80 ss -tlnup | grep :80 并不奇怪,输出结果显示: $ netstat -tlnup | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3202/nginx: master 即,80 端口是一个 nginx 进程在提供服务,但是我们知道,管理平台不是静态网页,nginx 大概率是一个反向代理的作用。 因此,我打开了 /etc/nginx/nginx.conf 查看一下 80 端口具体代理了哪里的网络服务(省略无关配置): stream { server { listen 80; proxy_pass 172.20.2.31:80; } } 看样子代理了 172.20.2.31 这个计算节点上 80 端口的服务。 接着,我 ssh 连接上了这个节点,同样使用惯例的指令查询 80 端口上的服务,但是这一次,奇怪的事情出现了,终端里什么输出都没有,也就是说,“没有”任何进程在 80 端口上服务? ...

April 4, 2026 · 5 min