java - 获取 Unix 线程转储

标签 java linux unix

我正在尝试在 Java 应用程序上获取 unix(solaris 和 linux)线程转储。

1)当java应用是tomcat web应用时, 使用 kill -3 ,转储转到 catalina.out 文件,因为这是标准输出。 kill -3 pid > td.out 不起作用。

2) 对于另一个 spring 独立 java 应用程序,我如何找到它的标准输出。 我用过了: kill -3 pid,我检查了我的应用程序日志,但我找不到任何东西。

请告知我如何确定 java 应用程序的标准输出并查看线程转储。

谢谢, B.

最佳答案

如果您使用的是 OpenJDK 或 Sun JDK 6 或更高版本,请尝试 bin 文件夹中的 jstack 命令。当由于某种原因将标准输出重定向到文件有问题时,这很有用。执行以下命令,传入 Java 进程 ID:

jstack -l JAVA_PID > jstack.out

关于java - 获取 Unix 线程转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19819020/

相关文章:

java - Servlet 问题 - 索引页面未弹出

java - 存储多个 vector

java - Stomp 拦截器不工作

内核可以在Linux中使用虚拟内存吗

java - 整数幂的乘法、^ 运算符与 Math.pow()

linux - 如何修复 "invalid signature when apt-get update"错误?

java - sarxos 的图书馆网络摄像头捕获不适用于覆盆子

bash - 将列粘贴到循环中的现有文件

linux - Linux 应用程序的一个实例开始运行其自身的多个实例的可能原因是什么?

linux - appassembler maven 插件未对生成的脚本设置 "execute"权限