Who is listening on a given TCP port on Mac OS X?
在Linux上,我可以使用
在Macos High Sierra上,使用以下命令:
1 | lsof -nP -i4TCP:$PORT | grep LISTEN |
在旧版本上,使用以下表单之一:
1 2 | lsof -nP -iTCP:$PORT | grep LISTEN lsof -nP -i:$PORT | grep LISTEN |
用端口号或用逗号分隔的端口号列表替换
如果您需要有关1024以下端口的信息,请预先发送
有关更多选项,请参见注释。
由于雪豹(10.6),直到莫哈韦(10.14),每个版本的MacOS都支持这一点:
就我个人而言,我在我的
1 2 3 4 5 6 7 8 9 | 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 } |
然后,
有了这个,就很容易询问特定的过程,例如
您还可以使用:
1 | sudo lsof -i -n -P | grep TCP |
这在小牛中有效。
2016年1月更新
真的很惊讶没有人建议:
1 | lsof -i :PORT_NUMBER |
获取所需的基本信息。例如,检查端口1337:
1 | lsof -i :1337 |
其他变化,视情况而定:
1 2 | sudo lsof -i :1337 lsof -i tcp:1337 |
您可以轻松地在此基础上提取PID本身。例如:
1 | lsof -t -i :1337 |
这也相当于(结果)这个命令:
1 | lsof -i :1337 | awk '{ print $2; }' | head -n 2 | grep -v PID |
快速说明:
为了完整性,因为经常一起使用:
取消PID:
1 2 | kill -9 <PID> # kill -9 60401 |
或者作为一条直线:
1 | kill -9 $(lsof -t -i :1337) |
这适用于Mavericks(OSX 10.9.2)。
1 | sudo lsof -nP -iTCP:$PORT -sTCP:LISTEN |
在OSX上,可以使用netstat的-v选项来提供相关的PID。
类型:
1 | netstat -anv | grep [.]PORT |
输出如下:
1 | tcp46 0 0 *.8080 *.* LISTEN 131072 131072 3105 0 |
pid是最后一列之前的数字,本例为3105
在MacOS上,有一种简单的方法可以获取进程ID,该ID通过netstat监听特定端口。此示例查找为端口80上的内容提供服务的进程:
查找在端口80上运行的服务器1 | netstat -anv | egrep -w [.]80.*LISTEN |
样本输出
1 | tcp4 0 0 *.80 *.* LISTEN 131072 131072 715 0 |
最后一列的第二个是PID。上面是715。
选项用于监听、建立和关闭端口
1 | sudo lsof -n -i -P | grep TCP |
仅用于侦听端口
1 | sudo lsof -n -i -P | grep LISTEN |
对于特定的监听端口,例如:端口80
1 | sudo lsof -n -i -P | grep ':80 (LISTEN)' |
或者,如果您只需要一个简洁的摘要[没有描述任何服务/应用程序],请通过netstat访问。好的一面是,不需要sudo
1 | netstat -a -n | grep 'LISTEN ' |
解释使用的项目:
-n取消主机名
-i用于IPv4和IPv6协议
-省略端口名(O)
-所有套接字的[over netstat]
-n[通过netstat]不解析名称,将网络地址显示为数字
Tested on High Sierra 10.13.3 and Mojave 10.14.3
the last syntax netstat works on linux too
lsof you can try over Debian based: apt-get install lsof
在最新的MacOS版本上,可以使用以下命令:
1 | lsof -nP -i4TCP:$PORT | grep LISTEN |
如果你觉得很难记住,那么也许你应该创建一个
1 | vi ~/.bash_profile |
然后将以下行添加到该文件并保存它。
1 2 3 | function listening_on() { lsof -nP -i4TCP:"$1" | grep LISTEN } |
现在,您可以在终端中键入
在雪豹(OS X 10.6.8)上,运行"man lsof"会产生:
1 | lsof -i 4 -a |
(实际手动输入为'LSOF-I 4-A-P 1234')
以前的答案对雪豹不起作用,但我一直在尝试使用"netstat-nlp",直到我看到pts在答案中使用了"lsof"。
我是个Linux用户。在Linux中,使用
1 | lsof -n -i | awk '{ print $1,$9; }' | sort -u |
这将显示谁在做什么。删除-n以查看主机名(稍慢)。
这是我需要的。
1 | ps -eaf | grep `lsof -t -i:$PORT` |
对于MacOS,我同时使用两个命令来显示有关在计算机上侦听的进程和连接到远程服务器的进程的信息。换句话说,要检查主机上的侦听端口和当前(TCP)连接,可以同时使用以下两个命令
1 2 3 | 1. netstat -p tcp -p udp 2. lsof -n -i4TCP -i4UDP |
我想我会添加我的输入,希望它能最终帮助别人。
我写了一个小剧本,不仅要看谁在听哪里的话,还要展示已经建立的联系和与哪些国家的联系。在OSX Siera上工作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/bin/bash printf" checking established connections " 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" displaying listening ports " sudo lsof -i -n -P | grep TCP | grep LISTEN | cut -d"" -f 1,32-35 #EOF |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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) |
这可能有助于检查您是否与朝鲜有联系!;-)
这是在马科斯高地上的一个好方法:
1 | netstat -an |grep -i listen |
灵感来源于用户Brent Self: