在Linux上,我可以使用netstat-pntl | grep$PORT或fuser-n tcp$PORT来确定哪个进程(PID)正在侦听指定的tcp端口。如何在Mac OS X上获得相同的信息?
当前回答
在OS X上,可以使用netstat的-v选项来提供相关的pid。
类型:
netstat -anv | grep [.]PORT
输出将如下所示:
tcp46 0 0 *.8080 *.* LISTEN 131072 131072 3105 0
PID是最后一列之前的数字,在本例中为3105
其他回答
在macOS Big Sur和更高版本上,使用以下命令:
sudo lsof -i -P | grep LISTEN | grep :$PORT
或者只看到IPv4:
sudo lsof -nP -i4TCP:$PORT | grep LISTEN
对于旧版本,请使用以下表单之一:
sudo lsof -nP -iTCP:$PORT | grep LISTEN
sudo lsof -nP -i:$PORT | grep LISTEN
用端口号或逗号分隔的端口号列表替换$PORT。
如果需要有关#1024以下端口的信息,请在sudo前面加上空格。
-n标志用于显示IP地址而不是主机名。这使得命令执行得更快,因为获取主机名的DNS查找可能会很慢(对于许多主机来说几秒钟或一分钟)。
-P标志用于显示原始端口号,而不是解析名称(如http、ftp)或更深奥的服务名称(如dpserve、socalia)。
有关更多选项,请参见注释。
为了完整,因为经常一起使用:
要终止PID:
sudo kill -9 <PID>
# kill -9 60401
在最新的macOS版本上,可以使用以下命令:
lsof -nP -i4TCP:$PORT | grep LISTEN
如果你觉得很难记住,那么也许你应该创建一个bash函数,并用一个更友好的名称来导出它
vi ~/.bash_profile
然后将以下行添加到该文件并保存。
function listening_on() {
lsof -nP -i4TCP:"$1" | grep LISTEN
}
现在,您可以在终端中键入listening_on 80,并查看哪个进程正在侦听端口80。
在OS X上,可以使用netstat的-v选项来提供相关的pid。
类型:
netstat -anv | grep [.]PORT
输出将如下所示:
tcp46 0 0 *.8080 *.* LISTEN 131072 131072 3105 0
PID是最后一列之前的数字,在本例中为3105
灵感来自用户Brent Self:
lsof-i 4-a | grep列表
签出此项目/工具:procs
在MacOs上安装:brew安装过程
这允许您控制使用proc显示的内容。
要查看TCP/UDP端口,请在安装工具后将以下内容添加到~/.procs.toml。
[[columns]]
kind = "TcpPort"
style = "BrightYellow|Yellow"
numeric_search = true
nonnumeric_search = false
align = "Left"
[[columns]]
kind = "UdpPort"
style = "BrightGreen|Green"
numeric_search = false
nonnumeric_search = true
align = "Left"
以下是示例输出:
推荐文章
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- “你有邮件”的消息在终端,os X
- Mac OS X中的环境变量
- WebSockets和纯TCP之间的根本区别是什么?
- 如何从macOS完全卸载蟒蛇
- 如何配置Mac OS X术语,使git有颜色?
- 我如何确定文件编码在OS X?
- 使iTerm以与其他操作系统相同的方式翻译“元键”
- 错误:无法在ARM处理器上的Homebrew中安装英特尔默认前缀(/usr/local)
- 在Mac OS X上哪里安装Android SDK ?
- Mac/OS X上的/var/lib/docker在哪里
- Xcode构建失败“架构x86_64未定义的符号”
- 在OSX 10.11中安装Scrapy时,“OSError: [Errno 1]操作不允许”(El Capitan)(系统完整性保护)
- 如何在Mac OS X 10.6中使硬件发出哔哔声