在Ubuntu下我有一个交互式程序,我怀疑它正在挂着监听特定的端口,不知道哪一个。
它是一个shell脚本,在最后一行调用java命令。
如何在“悬挂”状态下轻松找出正在收听的端口?
我试图把lsof放在命令前面,但写出了一条巨大的路径,它说“lsof:path too long”
lsof -c java ${JAVA_OPTS} -classpath "${SERVLET_API}:${JSP_API}:${OPENCMS_CLASSPATH}:${TOMCAT_CLASSPATH}:${OPENCMS_BASE}/classes" org.opencms.main.CmsShell -base="${OPENCMS_BASE}" "$@"
答案 0 :(得分:1)
在几个命令中拆分它。首先使用java ...
启动您的应用程序。然后,您可以使用jps
查看新Java进程的进程ID(jps
应与java
位于同一文件夹中。)
现在您可以使用lsof -np <id>
获取文件描述符列表。
但Java程序也可以挂起循环。要查看该计划目前正在执行的操作,请使用jstack
或jconsole
。