谁在Mac OS X上监听给定的TCP端口?

倾然丶 夕夏残阳落幕 提交于 2019-12-28 12:21:07

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

在Linux上,我可以使用netstat -pntl | grep $PORT netstat -pntl | grep $PORTfuser -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是一种非常强大的工具,但不幸的是,它使用起来并不方便。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!