Ich versuche, alle Prozesse dazu zu bringen, auf eine Netzwerkverbindung unter Mac OS X zu warten. Ich netstat
habe keine -p
Option und versuche es mit lsof
lsof -i -sTCP:LISTEN
gibt mir eine faire Liste von Hörprozessen, aber nicht alle. Ich kann zum Beispiel telnet an Port 10080, wo ein Prozess auf eine Verbindung wartet, aber dies wird in der Ausgabe von nicht angezeigt lsof
. Was vermisse ich?
$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.
aber
$ sudo lsof -n -i | grep 10080
$
amanda
statt 10080?-n
nur Adressen betrifft und keine Ports. Um den Port zu erhalten Nummern Ich habe zu verwenden ,-P
auch. Dankelsof -i -sTCP:LISTEN
und es ohne die-n
und es hat die 10080 auch nicht verraten. Also musst du das benutzen-P
.Antworten:
Alle geben die gleichen 32 Einträge (
... | wc -l
) auf meinem stark genutzten Lion-MBP zurück.-P -n
verhindertlsof
die Namensauflösung und blockiert nicht. Fehlt einer dieser beiden, kann es sehr langsam sein.Für UDP:
sudo lsof -iUDP -P -n | egrep -v '(127|::1)'
. Ohne-n
und-P
dauert es lange.Erinnerung: Dies schließt keine Firewall-Einstellungen ein.
quelle
-P
. Ich habe fälschlicherweise angenommen-n
, dass dies nicht nur für IPs gilt, sondern auch für Portnummern.Ermitteln Sie zunächst die Prozess-ID (pid), die den erforderlichen Port belegt hat (z. B. 5434):
Beende diesen Prozess:
quelle
ps aux
listet nicht die Ports, die ein Prozess verwendetkill -9
als erste Option, um einen Prozess loszuwerden, ist eine extreme Wahl. Dies beantwortet auch nicht die Frage, bei der es nicht darum geht, Dinge zu töten, sondern herauszufinden, was läuft.