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


当前回答

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

其他回答

这是我所需要的。

ps -eaf | grep `lsof -t -i:$PORT`

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

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

lsof -i 4 -a

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

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

对MichałKalinowski的回答稍有改进(我没有足够的声誉在那里留下评论):如果您试图发现进程正在监听一个编号为255及以下的端口,grep命令可能会打印与IP地址相关的行,而这些行与期望的结果不符。对于任何编号的端口,grep命令也可能错误地匹配设备的MAC地址或PID。为了改进这一点,我建议将命令更改为grep--color“:$1”

lsof -n -i | awk '{ print $1,$9; }' | sort -u

这显示了谁在做什么。删除-n以查看主机名(速度稍慢)。