port佔用 - macos open port 8080




誰在Mac OS X上的給定TCP端口上進行偵聽? (8)

在Linux上,我可以使用netstat -pntl | grep $PORT netstat -pntl | grep $PORTfuser -n tcp $PORT找出哪個進程(PID)正在偵聽指定的TCP端口。 我如何在Mac OS X上獲得相同的信息?


2016年1月更新

真的很驚訝沒有人建議:

lsof -i :PORT_NUMBER

獲得所需的基本信息。 例如,檢查端口1337:

lsof -i :1337

其他變化,取決於具體情況:

sudo lsof -i :1337
lsof -i tcp:1337

您可以輕鬆地在此基礎上提取PID本身。 例如:

lsof -t -i :1337

這也等同於(結果)該命令:

lsof -i :1337 | awk '{ print $2; }' | head -n 2 | grep -v PID

快速插圖:

為了完整性,因為經常一起使用:

要殺死PID:

kill -9 <PID>
# kill -9 60401

或作為一個班輪:

kill -9 $(lsof -t -i :1337)

你也可以使用:

sudo lsof -i -n -P | grep TCP

這在小牛隊中很有效。


在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'的使用。


在macOS High Sierra上,使用以下命令:

lsof -nP -i4TCP:$PORT | grep LISTEN

在舊版本中,使用以下形式之一:

lsof -nP -iTCP:$PORT | grep LISTEN
lsof -nP -i:$PORT | grep LISTEN

$PORT替換$PORT端口號或用逗號分隔的端口號列表。

如果您需要#1024以下端口的信息,請預先安裝sudo (後跟一個空格)。

-n標誌用於顯示IP地址而不是主機名。 這使命令執行得更快,因為獲取主機名的DNS查找速度可能很慢(對於許多主機而言,幾秒鐘或一分鐘)。

-P標誌用於顯示原始端口號,而不是解析名稱,如httpftp或更深奧的服務名稱,如dpservesocalia

查看評論以獲取更多選項。


我是一個Linux的傢伙。 在Linux中,使用netstat -ltpn或這些字母的任意組合非常簡單。 但在Mac OS X中, netstat -an | grep LISTEN netstat -an | grep LISTEN是最人性化的。 其他人在進行故障排除時非常難看,也很難記住。


我製作了一個小腳本,不僅可以看到誰在監聽,還可以顯示已建立的連接和哪些國家。 適用於OSX Siera

#!/bin/bash
printf "\nchecking established connections\n\n"
for i in $(sudo lsof -i -n -P | grep TCP | grep ESTABLISHED | grep -v IPv6 | 
grep -v 127.0.0.1 | cut -d ">" -f2 | cut -d " " -f1 | cut -d ":" -f1); do
    printf "$i : " & curl freegeoip.net/xml/$i -s -S | grep CountryName | 
cut -d ">" -f2 | cut -d"<" -f1
done

printf "\ndisplaying listening ports\n\n"

sudo lsof -i -n -P | grep TCP | grep LISTEN | cut -d " " -f 1,32-35

#EOF
Sample output
checking established connections

107.178.244.155 : United States
17.188.136.186 : United States
17.252.76.19 : United States
17.252.76.19 : United States
17.188.136.186 : United States
5.45.62.118 : Netherlands
40.101.42.66 : Ireland
151.101.1.69 : United States
173.194.69.188 : United States
104.25.170.11 : United States
5.45.62.49 : Netherlands
198.252.206.25 : United States
151.101.1.69 : United States
34.198.53.220 : United States
198.252.206.25 : United States
151.101.129.69 : United States
91.225.248.133 : Ireland
216.58.212.234 : United States

displaying listening ports

mysqld TCP *:3306 (LISTEN)
com.avast TCP 127.0.0.1:12080 (LISTEN)
com.avast TCP [::1]:12080 (LISTEN)
com.avast TCP 127.0.0.1:12110 (LISTEN)
com.avast TCP [::1]:12110 (LISTEN)
com.avast TCP 127.0.0.1:12143 (LISTEN)
com.avast TCP [::1]:12143 (LISTEN)
com.avast TCP 127.0.0.1:12995 (LISTEN)
com.avast [::1]:12995 (LISTEN)
com.avast 127.0.0.1:12993 (LISTEN)
com.avast [::1]:12993 (LISTEN)
Google TCP 127.0.0.1:34013 (LISTEN)

這可能有助於檢查您是否連接到朝鮮! ;-)


這做了我所需要的。

ps -eaf | grep `lsof -t -i:$PORT`

這在小牛隊(OSX 10.9.2)中有效。

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




listen