没有jstack的Java线程转储



我需要从命令行(ubuntu服务器(监视java线程状态,以便与Icinga监视器一起使用。但我不能使用jps、jstack和jcmd命令,因为不允许在生产服务器中安装JDK。

带ps命令的process_id

# ps -ef| grep [s]tart.jar | cut -d' ' -f6
1201

但我正在努力收集java线程转储。我试过使用kill-3,但是没有得到任何输出。

有没有其他方法可以从命令行收集java线程状态?

我发现了在执行kill -3 <pid>时捕获线程转储的方法。我在jetty服务器的JAVA_options中添加了以下选项,这有助于在指定位置记录线程转储。

-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=/var/log/jetty9/threaddump.log

现在kill -3 <pid>命令的执行将线程转储记录在threaddump.log中,该日志用于了解线程的状态。

最新更新