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

在Linux上,我能够使用netstat -pntl | grep $PORT netstat -pntl | grep $PORTfuser -n tcp $PORT找出哪一个进程(PID)正在侦听指定的TCP端口。 如何在Mac OS X上得到相同的信息? bash


#1楼

在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'为止。 工具


#2楼

您还能够使用: spa

sudo lsof -i -n -P | grep TCP

这适用于小牛。 code


#3楼

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

这显示谁在作什么。 删除-n以查看主机名(慢一点)。 进程


#4楼

这在Mavericks(OSX 10.9.2)中有效。 awk

sudo lsof -nP -iTCP:$PORT -sTCP:LISTEN

#5楼

从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是一种很是强大的工具,但不幸的是,它使用起来并不方便。

相关文章
相关标签/搜索