我在一台 OS X Mountain Lion 笔记本电脑上安装了几个 Vagrant 盒子。我试图找出哪个进程正在监听端口 8080。我的变体产生了大约一百行代码,但没有一行带有特定的端口号。我假设类似以下内容:
netstat -XXX | grep 8080
答案1
不幸的是,在 OSX 上,您只能使用 BSD netstat
,它不会显示连接到给定端口的进程 ID。您需要做的是使用lsof
。您需要使用的语法是:
lsof -i :8080
这将打印出大量信息,其中大部分您并不关心,但字段标记得很好。例如,查看此示例输出。
lsof -i :53237
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
GoogleTal 927 guest 29u IPv4 0x2c3f7f95244855c3 0t0 TCP localhost:53237 (LISTEN)
这告诉我端口 53237 正在由进程 ID 927 使用。读取 COMMAND 字段时请记住此输出已被截断,实际上二进制文件的全名是 GoogleTalkPlugin。
答案2
这是我在查找监听端口的 PID 时喜欢使用的方法。对于 Linux,请使用:netstat -tunlp
- n 网络
- l 监听端口
- p过程
- 传输控制协议
- UDP
您可以在手册页中找到更多信息。
答案3
我正在netstat
对 OS X 进行修改以提供此功能,并偶然发现它-v
会为您提供与套接字关联的 pid。
答案4
要找出特定端口,请使用以下 netstat 命令
netstat -an | grep ':8080'