![强制销毁端口 80 上的进程](https://linux22.com/image/1518017/%E5%BC%BA%E5%88%B6%E9%94%80%E6%AF%81%E7%AB%AF%E5%8F%A3%2080%20%E4%B8%8A%E7%9A%84%E8%BF%9B%E7%A8%8B.png)
这可能是一次冒险,但我无论如何都会尝试。
我需要运行一个应用程序,localhost:80
但发现它被阻止了。当我转到时localhost
,我看到了以下内容:
显然这是我在使用 Java Servlet 时想到的。
更重要的是,当检查正在运行的进程时:80
,我只会看到httpd
进程。当在 ActivityMonitor 中查看我当前的所有活动进程时,没有什么让我感到不寻常的。我还在整个机器中递归搜索了“它有效!”文本,但什么也没有弹出(我也进行了其他搜索,但没有找到任何结果)。该 servlet 似乎在启动时运行,并且已检查了我所知道的所有启动菜单,并且再次没有发现任何异常。
似乎一个进程正在运行,但是运行该进程的文件却消失了,我知道这是不可能的。
我的问题是,是否有方法强制终止正在运行的任何东西:80
?(可能性极小,因为我已经提到过它没有出现在任何过程中)。另外,我是否可以进行更递归的搜索?我grep
在 Finder 中进行了基本搜索和 SSD 搜索,但都没有结果……
答案1
正如它已经指出的那样,“它起作用了!”是来自安装在您系统上的 Apache Web 服务器的默认网页的文本。您可以通过运行来自行验证:sudo lsof -n -iTCP:80 | grep LISTEN
。Finder 通常不会显示/etc
文件夹的内容,因此您需要单击转到菜单(在 Finder 中),然后选择Go to Folder
手动输入的位置/etc/apache2
。在那里您可以找到 apache 的配置文件,您可以在“DocumentRoot”节下找到 Web 目录,然后如果您转到该位置,您将找到index.html
包含“It works!”的文件。
如果正在运行的 Apache 实例阻止在端口 80 上运行您的 servlet(这显然是冲突的),则将默认 Apache 的端口 80 更改为其他端口,比如端口 8080,然后从终端重新启动 Apache 服务;sudo /usr/sbin/apachectl restart
答案2
以下命令将停止apachectl
正在运行的进程并释放端口 80。
sudo /usr/sbin/apachectl stop