没有jstack的Java线程转储
我需要从命令行Ubuntu服务器监视java线程状态,以便与Icinga监视器一起使用。但我不能使用jps、jstack和jcmd命令,因为不允许在生产服务器中安装JDK 进程id使用ps命令没有jstack的Java线程转储,java,linux,multithreading,shell,monitoring,Java,Linux,Multithreading,Shell,Monitoring,我需要从命令行Ubuntu服务器监视java线程状态,以便与Icinga监视器一起使用。但我不能使用jps、jstack和jcmd命令,因为不允许在生产服务器中安装JDK 进程id使用ps命令 # ps -ef| grep [s]tart.jar | cut -d' ' -f6 1201 但我正在努力收集java线程转储。我尝试过kill-3,但没有得到任何输出 还有其他方法可以从命令行收集java线程状态吗?我在执行kill-3时找到了捕获线程转储的方法。 我在jetty server的JA
# ps -ef| grep [s]tart.jar | cut -d' ' -f6
1201
但我正在努力收集java线程转储。我尝试过kill-3,但没有得到任何输出
还有其他方法可以从命令行收集java线程状态吗?我在执行kill-3时找到了捕获线程转储的方法。 我在jetty server的JAVA_选项中添加了以下选项,这有助于记录指定位置的线程转储
-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=/var/log/jetty9/threaddump.log
现在,kill-3命令的执行会在threaddump.log中记录线程转储,该日志用于了解线程的状态。但无法获得任何输出为什么?没有输出?输出被重定向到您无权访问的文件?@talex,谢谢您的提问。你们的问题让我想到了输出位置,我已经在回答部分写了。谢谢