【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
在Linux上,我可以使用netstat -pntl | grep $PORT netstat -pntl | grep $PORT或fuser -n tcp $PORT找出哪个进程(PID)正在侦听指定的TCP端口。 如何在Mac OS X上获得相同的信息?
#1楼
在Snow Leopard(OS X 10.6.8)上,运行“ man lsof”将产生:
lsof -i 4 -a
(实际的手动输入是“ lsof -i 4 -a -p 1234”)
先前的答案在Snow Leopard上不起作用,但是我一直尝试使用'netstat -nlp',直到在pts的答案中看到使用'lsof'为止。
#2楼
您还可以使用:
sudo lsof -i -n -P | grep TCP
这适用于小牛。
#3楼
lsof -n -i | awk '{ print $1,$9; }' | sort -u
这显示谁在做什么。 删除-n以查看主机名(慢一点)。
#4楼
这在Mavericks(OSX 10.9.2)中有效。
sudo lsof -nP -iTCP:$PORT -sTCP:LISTEN
#5楼
从Snow Leopard(10.6) 到Mojave(10.14)和Catalina(10,15) ,每个macOS版本都支持以下功能:
sudo lsof -iTCP -sTCP:LISTEN -n -P
就个人而言,我在~/.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是一种非常强大的工具,但不幸的是,它使用起来并不方便。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3148938