在Linux上,我能够使用netstat -pntl | grep $PORT
netstat -pntl | grep $PORT
或fuser -n tcp $PORT
找出哪一个进程(PID)正在侦听指定的TCP端口。 如何在Mac OS X上得到相同的信息? bash
在Snow Leopard(OS X 10.6.8)上,运行“ man lsof”将产生: tcp
lsof -i 4 -a
(实际的手动输入是“ lsof -i 4 -a -p 1234”) 函数
先前的答案在Snow Leopard上不起做用,可是我一直尝试使用'netstat -nlp',直到在pts的答案中看到使用'lsof'为止。 工具
您还能够使用: spa
sudo lsof -i -n -P | grep TCP
这适用于小牛。 code
lsof -n -i | awk '{ print $1,$9; }' | sort -u
这显示谁在作什么。 删除-n以查看主机名(慢一点)。 进程
这在Mavericks(OSX 10.9.2)中有效。 awk
sudo lsof -nP -iTCP:$PORT -sTCP:LISTEN
从Snow Leopard(10.6) 到Mojave(10.14)和Catalina(10,15) ,每一个macOS版本都支持如下功能: file
sudo lsof -iTCP -sTCP:LISTEN -n -P
grep
就我的而言,我在~/.bash_profile
使用了这个简单的函数:
listening() { if [ $# -eq 0 ]; then sudo lsof -iTCP -sTCP:LISTEN -n -P elif [ $# -eq 1 ]; then sudo lsof -iTCP -sTCP:LISTEN -n -P | grep -i --color $1 else echo "Usage: listening [pattern]" fi }
而后, listening
命令为您提供了在某个端口上进行监听的进程列表,而且listening smth
某处进行了listening smth
。
有了这个,就能够很容易地询问特定的过程,例如listening dropbox
或端口,例如listening 22
。
lsof
命令具备一些用于询问端口,协议,进程等的专用选项,可是我我的发现上述功能更方便,由于我不须要记住全部这些低级选项。 lsof
是一种很是强大的工具,但不幸的是,它使用起来并不方便。