I am trying to get all the processes listening for a network connection on Mac OS X. netstat does not have the -p option and I am trying with lsof

lsof -i -sTCP:LISTEN

gives me a fair list of listening processes but not all. I can for example telnet to port 10080 where I have a process listening for a connection but this is not shown in the output of lsof. What am I missing?

$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.

but

$ sudo lsof -n -i | grep 10080
$
link|improve this question
2  
Does the output of lsof say amanda instead of 10080? – Jon Lin Dec 15 '11 at 13:56
1  
@JonLin I didn't notice that the -n only affects addresses and not ports. To get port numbers I have to use -P too. Thanks – Matteo Dec 15 '11 at 14:35
1  
@JonLin: but you have post lsof -i -sTCP:LISTEN , and it without the -n and it didn't reveal the 10080 too. So you have to use the -P. – Hanan N. Dec 15 '11 at 17:30
feedback

1 Answer

up vote 1 down vote accepted

sudo lsof -iTCP -sTCP:LISTEN

sudo lsof -iTCP -sTCP:LISTEN -P

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

sudo lsof -iTCP -sTCP:LISTEN -n

All return the same 32 entries (... | wc -l) on my heavily used Lion MBP.

-P -n prevents lsof from doing name resolution, and it doesn't block. Missing either one of these, it can be very slow.

For UDP: sudo lsof -iUDP -P -n | egrep -v '(127|::1)'. Without -n and -P, it takes a long time.

Reminder: This does not include firewall settings.

link|improve this answer
Yes the problem was the missing -P. I wrongly assumed -n applied not only to IPs but port numbers too. – Matteo Dec 29 '11 at 7:04
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.