繁体   English   中英

在端口 80 Mac OSX 上杀死未知的自重启服务器

[英]Killing an unknown self restarting server on port 80 Mac OSX

我有一台运行在端口 80 上的服务器,但我不知道它是什么或它来自哪里。 当我跑

sudo lsof -i :80 | grep LISTEN

我得到

httpd      80    root    5u  IPv6 0x91f5a9de62859cfd      0t0  TCP *:http (LISTEN)
httpd     694    _www    5u  IPv6 0x91f5a9de62859cfd      0t0  TCP *:http (LISTEN)

我尝试使用 PID 输入获取进程名称,但我得到的只是“httpd”或“FOREGROUND”。

当我终止 PID 时,该进程只是使用新的 PID 重新启动。 我想我将不得不在发布时停止它。

如何阻止此服务器在启动时运行?

如果有帮助,我正在尝试释放端口 80 以在 MAMP 上使用 apache 服务器。

这只是一个猜测,但它可能是 apache 的内置版本,由 launchd(OS X 的守护程序管理器)启动(并重新启动)。 默认情况下它是禁用的,但可能以某种方式启用。 您可以尝试使用以下方法禁用它:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

如果不这样做(它会说“找不到指定的服务”),您可以通过查找主进程的 PID(以 root 身份运行的进程)来检查它是否是其他启动守护程序项,而不是_www):

sudo launchctl list | grep <masterPID>

这不一定会准确地告诉您发生了什么,但可能会为您指明正确的方向。

就像 Gordon 建议的那样,这是 Apache Web 服务器的内置版本。

你可以用

sudo apachectl stop

顺便说一句,这个网络服务器的配置可以在/etc/apache2/httpd.conf目录中找到。

这在我身上经常发生。 正如@Gordon Davisson 解释的那样,launchdeamon 进程很可能与您设置的服务发生冲突。 绝对停止 apachetl 服务器。

sudo apachetl -k stop

尝试找到所有的httpd进程,它们应该是最后一个

sudo lsof -i :80 // without grep

然后得到第一个进程(最有可能在1000s)也应该是最低的一个。

sudo kill <firstHttpdPID>

这应该会杀死运行该 httpd 实例的所有进程,然后您只需启动备份服务器即可。 但是必须先停止它,否则它会再次继续运行。

Mac OSX 与 Apache 捆绑在一起,但它已停用。 您可能以某种方式激活了它。 就我而言,我之前已经安装了 XAMPP 并在/etc/apache2/httpd.conf中配置了一些东西,这会导致我的端口localhost:80指向带有It Works! html 页面It Works! .

TLDR,解决方案是停用Apache2服务器。 转到您的终端,然后输入

sudo apachetl -k stop

就我而言,它返回以下内容:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using Shafies-MacBook-Pro.local. Set the 'ServerName' directive globally to suppress this message
httpd (no pid file) not running

如果您在浏览器中输入localhost ,则端口 80 不再处于活动状态,您将看不到It Works! 了。

对于上下文,我很久以前就删除了 XAMPP 并且不知道我的localhost:80仍然处于活动状态。 我无法将虚拟域posts.com重定向到我的 kubernetes YAML 配置文件的本地主机端口。

这是我的ingress-srv.yaml文件:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-srv
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: posts.com
      http:
        paths:
          - path: /?(.*)
            backend:
              serviceName: client-srv
              servicePort: 3000

我通过在位于/etc/hosts的主机文件中添加以下行来欺骗操作系统将我的posts.com重定向到localhost:80

127.0.0.1 posts.com

由 SM

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM