我如何知道在 linux 的特定端口上运行的是什么服务?

Gee*_*eek 59 command-line networking process ip netstat

我正在尝试在我的 linux 机器上运行 weblogic 服务器,但出现以下错误:

ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
Run Code Online (Sandbox Code Playgroud)

我认为该错误意味着默认情况下为 8453 的调试器端口已被某些其他服务保留。如何找出在特定端口号中运行的服务?

PS:我使用了netstat命令,但它显示了占用所有端口的所有服务..这里我只对特定端口感兴趣。

Bit*_*Nix 66

两种方式:

  • lsof -i :port -S
  • netstat -a | grep port

您可以执行man lsofman netstat获取所需的信息。替换port为您要搜索的端口号。

  • 你可能想让`netstat -a | grep 端口号`。否则,您将受制于 /etc/services。 (3认同)

Ulr*_*gel 14

您可以使用fuserlsof即:

fuser 8453/tcp
lsof -i TCP:8453
Run Code Online (Sandbox Code Playgroud)

如果您想了解更多信息,fuser也可以使用该-v标志,即:fuser -v 8453/tcp


h3r*_*ler 11

对于它的价值......取决于您拥有的netstat(特别是 GNU netstat)的版本,您可以使用

netstat -punta | grep <port>
Run Code Online (Sandbox Code Playgroud)

这将显示 ESTABLISHED 和 LISTEN 状态 UDP 和 TCP 中的连接,它将忽略 UNIX 本地套接字。最终结果是一个漂亮、整洁、小的结果集。

-p标志将为您提供进程 ID 和正在使用该端口的进程名称

-u标志表示UDP

-n标志用于数字地址

-t标志表示TCP

-a节目监听和非监听套接字

编辑 - 该ss命令已netstat在现代 EL 发行版中替换