Ich verwende OSX Mountain Lion 10.8.3 und habe meinen Mac neu gestartet.
Ich möchte einen Dienst starten (wie Apache auf Port 80), aber mit Port 80 ist bereits etwas los:
telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Warten Sie, ich höre Sie sagen, Sie können das mit lsof oder netstat finden. Außer es ist nichts da
netstat -an | grep LISTEN | grep '\.80'
*comes back blank*
lsof -i :80 | grep LISTEN
*comes back blank
Nach dem, was ich über Unix-Systeme weiß, muss dies dann eine Regel für die Weiterleitung von Paketen sein? Dh Pakete werden vom eingehenden Port 80 an etwas anderes weitergeleitet, das diesen Dienst abhört.
ipfw show
65535 0 0 allow ip from any to any
Hmm, da ist nichts Ungewöhnliches
pfctl -s nat
No ALTQ support in kernel
ALTQ related functions disabled
Nichts ungewöhnliches da
Meine Frage ist, wie kann ich Regeln für die Weiterleitung von Paketen anzeigen ... Unter Linux kann ich einfach iptables -L -t NAT oder iptables -L ausführen. Oder können mir OSX-Experten bei der Diagnose dieses Problems helfen?
lsof
Grep, das du benutzt hast, würde leer zurückkommen. Portnummern werden/etc/services
Namen zugeordnet. Versuchen Sielsof -i | grep http
...-i :port
Format verwenden, sondern nur, wenn Sie grep verwenden. Was ein Problem sein wird, ist, dasslsof
Root-Privilegien benötigt werden, um die Prozesse anderer Benutzer zu sehen, so dass Sie verwenden solltensudo lsof -i :80
(und ich würde es ohne das versuchengrep
, nur um sicherzugehen ...)lsof -i :80
in dieser Telnet-Sitzung noch eine Verbindung herzustellen? Und abgesehen von dem Versuch, http: // localhost / zu verwenden , zeigt die Eingabe an dieser Telnet-Eingabeaufforderung möglicherweise etwas ...? (Auch hier weiß ich: Selbst wenn Sie es so herausfinden, wäre es nicht die Antwort auf Ihre Frage ...)Antworten:
Sie müssen diese Befehle ausführen
root
, um die Prozesse anderer Benutzer anzuzeigen. Beispiel:Mac OS X enthält einen Apache-Webserver, der mit
apachectl
as gesteuert werden kannroot
. Es wird normalerweise über gestartetlaunchd
, die entsprechende Konfigurationsdatei ist/System/Library/LaunchAgents/org.apache.httpd.plist
. Wenn es nicht dieser Apache ist, der auf Port 80 läuft, wird er wahrscheinlich gestartet , Apples Implementierung eines Daemon-Managers. Laut Wikipedia :quelle
sudo lsof -i ':80'
möglicherweise nicht wirklich etwas zurückgibt, es sei denn, man führt das aus, während eine Verbindung in der Telnet-Sitzung besteht? Aber auch ohne diese Befehle hätte http: // localhost / wahrscheinlich noch eine Apache-Begrüßungsseite angezeigt?sudo apachectl stop
im Terminal.sudo lsof -i -P | grep -i "80"
von superuser.com/questions/984919/...Nur um die tatsächliche Antwort zu verdeutlichen, falls Benutzer danach suchen.
launchd scannt den
/System/Library/LaunchDaemons/
On Boot und erkennt,org.apache.httpd.plist
dass Apache beim Start Port 80 darauf weiterleiten muss.sudo apachectl start
geschahEs gab jedoch einen Fehler in der
httpd.conf
Datei, der bedeutete, dass Apache nicht gestartet wurde, obwohl dies nicht über denapachectl
Befehl gemeldet wurde .Launchd entschied sich, Port 80 abzuhören, da er dachte, Apache sei aktiv.
Der Inhalt einer HTTP-Anfrage führte jedoch dazu, dass die Verbindung sofort geschlossen wurde.
sudo lsof -i :80
gab keine Antwortensudo netstat -an | grep LISTEN
gab keine Antworten für Port 80Soweit ich in Diagnosetools nachvollziehen konnte, gab es keine Informationen, die zeigten, dass Port 80 verwendet wurde oder überwacht wurde.
Das Reparieren der httpd.conf von Apache und das erfolgreiche Neustarten von Apache, sodass httpd in der ps-Tabelle enthalten war, führte dazu, dass HTTP-Anforderungen erfolgreich waren.
Ich habe mich daher geirrt, dass ich Apache nicht ausführen konnte, weil auf Port 80 bereits etwas zu hören war, und nicht Apache Conf selbst die Ursache war
quelle
Ich bin gerade auf dasselbe Problem mit OSX El Capitan und Avast Antivirus gestoßen.
sudo lsof -i ':80'
zeigte eine Verbindung zu avast.com.Ich musste
/Applications/Uninstall Avast.app
sudo rm -rf "/Library/Application Support/Avast" "/Applications/Avast Business Security.app" "/Applications/Uninstall Avast.app"
um zu verhindern, dass Port 80 verwendet wird.
quelle