我使用的是 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