lsof コマンドを使うとプロセスが開いているファイル(ソケットも含む)を見れるのをそれを使う。-n は名前解決しないためのオプション。-P はポート番号をポート名に変換しないようするオプション
$ sudo lsof -n -P -p [PID] | grep TCP
/home/sonots 606 sonots 4u IPv4 3718314992 0t0 TCP *:8080(LISTEN)
逆にポート番号から、プロセスIDを調べる場合は lsof -i:[PORT]
※ 補足: ホスト名まで指定する場合は -i@[HOST]:[PORT]
$ sudo lsof -P -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
/home/sonots 606 sonots 4u IPv4 3718314992 0t0 TCP *:8080(LISTEN)
netstat に -p オプションをつけると PID が出てくるので、それを grep するという手もある。
$ sudo netstat -anp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8649 0.0.0.0:* LISTEN 24381/gmond
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 606/plackup
$ sudo netstat -anp | grep 606
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 606/plackup