我如何知道 Linux 中的特定端口上正在运行什么服务?

我如何知道 Linux 中的特定端口上正在运行什么服务?

我试图在我的 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)

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

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

答案1

两种方式:

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

你可以做man lsof或者man netstat获取所需的信息。替换port为您要搜索的端口号。

答案2

您可以使用fuserlsof即:

fuser 8453/tcp
lsof -i TCP:8453

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

答案3

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

netstat -punta | grep <port>

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

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

-u标志显示 udp

-n标志用于数字地址

-t标志显示 TCP

显示-a监听和非监听套接字

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

答案4

在 Centos 上

/usr/sbin/lsof -i tcp:8453 (lsof -i protocol:port)

在Ubuntu上

/usr/bin/lsof -i tcp:8453

或者,使用过滤器缩小 netstat 的结果范围。

相关内容