lsof und Listening Ports

50

Ich versuche, alle Prozesse dazu zu bringen, auf eine Netzwerkverbindung unter Mac OS X zu warten. Ich netstathabe keine -pOption 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
$
Matteo
quelle
3
Sagt die Ausgabe von lsof amandastatt 10080?
Jon Lin
3
@ JonLin Ich habe nicht bemerkt, dass das -nnur Adressen betrifft und keine Ports. Um den Port zu erhalten Nummern Ich habe zu verwenden , -Pauch. Danke
Matteo
3
@ JonLin: aber du hast post lsof -i -sTCP:LISTENund es ohne die -nund es hat die 10080 auch nicht verraten. Also musst du das benutzen -P.
Hanan N.

Antworten:

75
sudo lsof -iTCP -sTCP:LISTEN
sudo lsof -iTCP -sTCP:LISTEN -P
sudo lsof -iTCP -sTCP:LISTEN -P -n
sudo lsof -iTCP -sTCP:LISTEN -n

Alle geben die gleichen 32 Einträge ( ... | wc -l) auf meinem stark genutzten Lion-MBP zurück.

-P -nverhindert lsofdie 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 -nund -Pdauert es lange.

Erinnerung: Dies schließt keine Firewall-Einstellungen ein.

Barry A.
quelle
3
Ja das Problem war das Fehlen -P. Ich habe fälschlicherweise angenommen -n, dass dies nicht nur für IPs gilt, sondern auch für Portnummern.
Matteo
-1
  1. Ermitteln Sie zunächst die Prozess-ID (pid), die den erforderlichen Port belegt hat (z. B. 5434):

    ps aux | grep 5434
    
  2. Beende diesen Prozess:

    kill -9 <pid>
    
Ashutosh Gupta
quelle
5
ps auxlistet nicht die Ports, die ein Prozess verwendet
Matteo
Ich stimme Matteo zu. Sind Sie sicher, dass Sie nicht so etwas wie netstat -anp | getan haben? grep 5434 (was wird eine Liste von Sachen zurückgeben, die auf 5434 zuhören, und die erste oder zweite Spalte ist die PID?)
Foon
6
Somit konnte nur in einer Situation gearbeitet werden, in der ein Prozess mit einer explizit in der Ausführungszeichenfolge angegebenen Portnummer aufgerufen wurde und dieser Teil der Zeichenfolge von grep abgeglichen wurde.
Techraf
1
Die Verwendung kill -9als 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.
Lindes