我正在运行Ubuntu服务器版,想要获取Tomcat的线程转储。
因此,我首先尝试查找Tomcat使用的PID:
$ jps -l
5809 sun.tools.jps.Jps
但是它不在那里?
所以,我使用了top
,发现PID为5730。
然后我调用jstack获取线程转储:
$ sudo jstack -l 5730
5730: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
发生了什么事?:-(
我已经按照Jstack和Jstat在升级到JDK6u23后停止工作中所述尝试导出CATALINA_TMPDIR,但这并没有改变任何事情:
$ export CATALINA_TMPDIR=/tmp
$ sudo /etc/init.d/tomcat6 restart
* Stopping Tomcat servlet engine tomcat6
...done.
* Starting Tomcat servlet engine tomcat6
...done.
$ sudo jstack -l 5934 // new PID after restart
5934: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
更新:
我还尝试了sudo -u tomcat6 jstack -l -F 5730 > threaddumpexceptions2.txt
,但它只在控制台上给了我大量的异常信息。