在端口 80 上运行的其他进程阻止 nginx 启动

在端口 80 上运行的其他进程阻止 nginx 启动

我需要为 nginx 配置虚拟主机。但是当我尝试启动 ngnix 时,它失败了,提示有一个进程正在使用端口 80。我如何才能找出哪个进程正在使用端口 80 并将其终止,以便我可以启动 nginx?

更新:

vehico@metaiot:~$ netstat -tulpn
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::22                   :::*                    LISTEN     

答案1

尝试在命令 shell 中使用以下命令:

sudo lsof -i :80

它将向您显示哪个进程正在使用它。 Sudo 在这里很重要。

要终止该进程,请找到 process_id,然后:

kill -9 process_id

或者在 node.js 进程的情况下:

pkill -f node
  • 澄清

命令将指定的信号发送给指定的进程或进程组。如果未指定信号,则发送 TERM 信号。此 TERM 信号将终止未捕获它的进程;对于其他进程,可能需要使用 KILL 信号(编号 9),因为无法捕获此信号。

pkill 将向每个进程发送指定的信号(默认为 SIGTERM),而不是将它们列在标准输出上。

-f

该模式通常仅与进程名称匹配。设置 -f 时,将使用完整命令行。这意味着它将终止与给定字符串匹配的任何进程。

答案2

运行命令

netstat -tunlp | grep  :80

将帮助您发现端口 80 上正在监听的内容。

一旦您知道可以通过停止来停止/禁用它,那么您将能够让 nginx 在端口 80 上进行监听。

相关内容