为了准备远程调试,我已经开始(在 Mac 上):
java Test -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9000
它正在循环运行。
有没有一种简单的方法来验证进程确实正在监听端口 9000?
看起来问题很简单:“java Test -Xdebug ...”而不是“java -XDebug ... Test”。命令行中的顺序错误。现在我看到 JVM 正在监听!
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