我正在使用 OS X El Capitan,服务器(应用程序)配置为允许我通过 VPN 访问我的家庭网络。不幸的是,服务器应用程序决定启动一堆httpd进程现在正在监听端口 80、443 和其他端口,即使服务器设置网站是离开并且这些端口上不应启动任何服务。
我不想或不需要这些服务处于活动状态,并希望关闭 httpd(或从一开始就不启动)。不幸的是,我既不能终止这些进程(它们会立即重新启动),也不能通过以下方式控制它们启动控制。
sudo lsof -i :80
httpd 422 root 5u IPv6 0x7... 0t0 TCP *:http (LISTEN)
httpd 425 _www 5u IPv6 0x7... 0t0 TCP *:http (LISTEN)
ps u 422
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 422 0.0 0.0 2457156 6136 ?? Ss 5:55PM 0:00.07 /usr/sbin/httpd -D FOREGROUND -f /Library/Server/Web/Config/Proxy/apache_serviceproxy.conf -E /private/var/log
尝试时:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
/System/Library/LaunchDaemons/org.apache.httpd.plist: Could not find specified service
那么,我该如何终止这些进程并释放这些端口?
我知道这里有一个用于 apache 服务器的配置文件:/Library/Server/Web/Config/Proxy/apache_serviceproxy.conf
我可以删除以下几行来解除这些端口的阻塞,但是httpd进程仍在运行。
listen 80
listen 443
答案1
苹果代理服务是抓取 80 和 443 端口的服务,因此您需要停止该服务。
sudo launchctl unload -w /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/com.apple.serviceproxy.plist
答案2
您可以使用命令停止该操作:
sudo apachectl stop
答案3
这个命令应该可以杀死它们:
sudo killall httpd
它们将在下次启动时重新启动。
答案4
如果其他人通过搜索找到此问题httpd或者端口 80但没有运行 Server.app,这是针对 macOS Monterey 12.x 及更高版本的解决方案:
sudo launchctl bootout system/org.apache.httpd