我试图在我的 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
答案2
您可以使用fuser
或lsof
即:
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 的结果范围。