One alternative is the use of the
lsof utility; specifically,
lsof -i 4tcp will list all processes with some sort of TCP IPv4 network sockets open. The manpage of
lsof will provide you with detailed information on how to use the utility and how to interpret the output.
If you are interested in a specific port, you can use this example:
lsof -i 4tcp:8080 -sTCP:LISTEN
If you would only like to get the process id, you can run this:
lsof -i 4tcp:8080 -sTCP:LISTEN -Fp
I use the command below when I want to see everything that's on a specific port for either TCP or UDP. The
-n option disables attempting to resolve the IP addresses into domain names, and the
-P disables attempting to figure out the name of a particular port. Also, running as
root will show you more processes than running as a normal user.
sudo lsof -iTCP:53 -iUDP:53 -n -P
The following code example lists all running TCP servers on your local OSX machine:
netstat -a -Ptcp | egrep 'tcp4.*LISTEN' tcp4 0 0 127.0.0.1.2022 *.* LISTEN 0 0 tcp4 0 0 *.3141 *.* LISTEN 0 0
LISTEN shows only sockets listening for connections. That is, servers.
The first line shows a server bound to
2022. It will answer to local requests, but not Internet-based requests.
The second line is a server bound to all addresses, ie
3141. It will answer Internet queries.
To list ports used by clients and servers, use the following:
netstat -an -Ptcp | grep tcp4
This should be possible in a terminal window using the Netstat command.
And if you like the GUI way more:
With Mac OS X 10.5, the /Applications/Utilities folder contains a network utility called: Network Utility, see tab Netstat for these stats presented in a gui application, along with Ping, Lookup, Traceroute, Whois, Finger and Port Scan.