誰在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是一種很是強大的工具,但不幸的是,它使用起來並不方便。

相關文章
相關標籤/搜索