如何使用 netstat 显示正在监听端口的进程

如何使用 netstat 显示正在监听端口的进程

我在一台 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'

相关内容