使用 Kill -3 的 Java 线程转储

使用 Kill -3 的 Java 线程转储

我曾经使用以下方法进行线程转储:

kill -3 `pidof java`

catalina.out这将在;中创建线程转储如何将这些输出保存到文件而不是catalina.out.通常,kill 命令不会将其输出到 stdout 或 stderr,因此我们无法通过将脚本重定向到日志或在开始时使用 exec in 来获取它;那么有什么办法可以做到吗?

答案1

您可能想改用jstack $(pidof java) > MYFILE

答案2

Java 版本 7 及更高版本有该jcmd工具,这是 Oracle 推荐的选项。jcmd聚合了多种诊断工具的功能,例如jstackjmap

您可以运行以下jcmd命令来获取 PID 1234 的进程的线程转储(输出重定向到文件):

jcmd 1234 Thread.print > thread-dump.txt

更多详细信息请参见此处:jcmd实用程序,jcmd 手册页

相关内容