我如何才能看到 JVM 正在监听该端口

问题描述 投票:0回答:3

为了准备远程调试,我已经开始(在 Mac 上):

java Test -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9000

它正在循环运行。

有没有一种简单的方法来验证进程确实正在监听端口 9000?

jvm remote-debugging
3个回答
3
投票

控制台命令对您有用吗?

netstat -aln | grep 9000

UPD: 谁在 Mac OS X 上监听给定的 TCP 端口?


1
投票

看起来问题很简单:“java Test -Xdebug ...”而不是“java -XDebug ... Test”。命令行中的顺序错误。现在我看到 JVM 正在监听!


0
投票

lsof
还可用于通过选项
-i
显示所有监听套接字。 此命令返回侦听端口的 Java 进程
9000

lsof -i:9000 -sTCP:LISTEN -ac java +c0

说明:

  • -iTCP:9000
    选择其 Internet 地址与 i 中指定的地址匹配的文件列表,并且
    :9000
    指定端口上的任何协议任何地址
    9000
  • -sTCP:LISTEN
    仅列出 TCP 状态为 LISTEN 的网络文件
  • -c
    选择执行以 c 字符开头的命令的进程的文件列表(
    -a
    选项用于对选择进行 AND 运算)
  • +c0
    打印命令达到最大长度(默认为 9)

由于

lsof
有多个版本,我在MacOS Big Sur上使用:

lsof 4.91
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
© www.soinside.com 2019 - 2024. All rights reserved.