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

Sar*_*rya -3 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     
Run Code Online (Sandbox Code Playgroud)

Dia*_*ond 5

尝试从命令 shell 使用以下命令:

sudo lsof -i :80
Run Code Online (Sandbox Code Playgroud)

它会告诉你哪个进程正在使用它。 须藤在这里很重要。

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

kill -9 process_id
Run Code Online (Sandbox Code Playgroud)

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

pkill -f node
Run Code Online (Sandbox Code Playgroud)
  • 澄清

Kill命令向指定的进程或进程组发送指定的信号。如果未指定信号,则发送 TERM 信号。这个 TERM 信号将杀死没有捕获它的进程;对于其他进程,可能需要使用 KILL 信号(数字 9),因为无法捕获该信号。

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

-f
Run Code Online (Sandbox Code Playgroud)

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