在Linux上,我可以使用netstat-pntl | grep$PORT或fuser-n tcp$PORT来确定哪个进程(PID)正在侦听指定的tcp端口。如何在Mac OS X上获得相同的信息?


当前回答

在雪豹(OS X 10.6.8)上,运行“man lsof”可获得:

lsof -i 4 -a

(实际手动输入为“lsof-i 4-a-p 1234”)

之前的答案在雪豹上不起作用,但我一直在尝试使用“netstat-nlp”,直到我看到pts在答案中使用了“lsof”。

其他回答

灵感来自用户Brent Self:

lsof-i 4-a | grep列表

在OS X上,可以使用netstat的-v选项来提供相关的pid。

类型:

netstat -anv | grep [.]PORT

输出将如下所示:

tcp46      0      0  *.8080                 *.*                    LISTEN      131072 131072   3105      0

PID是最后一列之前的数字,在本例中为3105

您还可以使用:

sudo lsof -i -n -P | grep TCP

这在小牛队奏效。

签出此项目/工具:procs

在MacOs上安装:brew安装过程

这允许您控制使用proc显示的内容。

要查看TCP/UDP端口,请在安装工具后将以下内容添加到~/.procs.toml。

[[columns]]
kind = "TcpPort"
style = "BrightYellow|Yellow"
numeric_search = true
nonnumeric_search = false
align = "Left"

[[columns]]
kind = "UdpPort"
style = "BrightGreen|Green"
numeric_search = false
nonnumeric_search = true
align = "Left"

以下是示例输出:

我是一个Linux人。在Linux中,使用netstat-ltpn或这些字母的任何组合都非常容易。但在Mac OS X netstat中,grep LISTEN是最人性化的。其他的非常难看,在排除故障时很难记住。