问题描述
在 Linux 上,我可以使用 netstat -pntl |grep $PORT
或 fuser -n tcp $PORT
找出哪个进程 (PID) 正在侦听指定的 TCP 端口.如何在 Mac OS X 上获得相同的信息?
On Linux, I can use netstat -pntl | grep $PORT
or fuser -n tcp $PORT
to find out which process (PID) is listening on the specified TCP port. How do I get the same information on Mac OS X?
推荐答案
在 macOS Big Sur
及更高版本上,使用以下命令:
On macOS Big Sur
and later, use this command:
sudo lsof -i -P | grep LISTEN
或者只查看 IPv4:
or to just see just IPv4:
sudo lsof -nP -i4TCP:$PORT | grep LISTEN
在旧版本上,使用以下形式之一:
On older versions, use one of the following forms:
sudo lsof -nP -iTCP:$PORT | grep LISTEN
sudo lsof -nP -i:$PORT | grep LISTEN
用端口号或以逗号分隔的端口号列表替换 $PORT
.
Substitute $PORT
with the port number or a comma-separated list of port numbers.
如果您需要有关 #1024 以下端口的信息,请在前面加上 sudo
(后跟一个空格).
Prepend sudo
(followed by a space) if you need information on ports below #1024.
-n
标志用于显示 IP 地址而不是主机名.这使得命令执行得更快,因为获取主机名的 DNS 查找可能很慢(许多主机需要几秒或一分钟).
The -n
flag is for displaying IP addresses instead of host names. This makes the command execute much faster, because DNS lookups to get the host names can be slow (several seconds or a minute for many hosts).
-P
标志用于显示原始端口号而不是解析名称,如 http
、ftp
或更深奥的服务名称,如 dpserve
, socalia
.
The -P
flag is for displaying raw port numbers instead of resolved names like http
, ftp
or more esoteric service names like dpserve
, socalia
.
更多选项见评论.
为了完整性,因为经常一起使用:
For completeness, because frequently used together:
杀死PID:
sudo kill -9 <PID>
# kill -9 60401
这篇关于谁在 Mac OS X 上监听给定的 TCP 端口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!