在Linux上,我能夠使用netstat -pntl | grep $PORT
netstat -pntl | grep $PORT
或fuser -n tcp $PORT
找出哪一個進程(PID)正在偵聽指定的TCP端口。 如何在Mac OS X上得到相同的信息? bash
在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'爲止。 工具
您還能夠使用: spa
sudo lsof -i -n -P | grep TCP
這適用於小牛。 code
lsof -n -i | awk '{ print $1,$9; }' | sort -u
這顯示誰在作什麼。 刪除-n以查看主機名(慢一點)。 進程
這在Mavericks(OSX 10.9.2)中有效。 awk
sudo lsof -nP -iTCP:$PORT -sTCP:LISTEN
從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
是一種很是強大的工具,但不幸的是,它使用起來並不方便。