我需要从命令行(ubuntu服务器)监视Java线程状态以与Icinga监视器一起使用。但是我不能使用jps,jstack和jcmd命令,因为不允许在生产服务器中安装JDK。
使用ps命令的process_id
# ps -ef| grep [s]tart.jar | cut -d' ' -f6
1201
但是我正在努力收集Java线程转储。我尝试使用kill -3,但无法获得任何输出。
还有其他从命令行收集Java线程状态的方法吗?
答案 0 :(得分:1)
我找到了执行kill -3 <pid>
时捕获线程转储的方法。
我在码头服务器的JAVA_OPTIONS中添加了以下选项,可帮助在指定位置记录线程转储。
-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=/var/log/jetty9/threaddump.log
现在执行kill -3 <pid>
命令会在threaddump.log中记录线程转储,该线程转储用于了解线程状态。