我想这样走
J堆栈全部
或者类似的东西,这样我就可以获得系统上所有jvm的线程转储。
能办到吗?
发布于 2016-04-01 20:12:18
J堆栈命令引用提供了以下三种调用形式:
J堆栈选项pid j堆栈选项可执行核心j堆栈选项远程主机名或IP
其中,只有第一个与当前运行jstack的系统上运行的JVM相关。因此,您必须通过它们的pids来标识JVM进程。
在对pid论点的总结中,参考说明:
要获得在机器上运行的Java进程的列表,请使用jps(1)命令。
想必,如果您有可用的jstack,那么您也有jps。这些文档建议您可以使用jps -q只获得相关pids的列表,因此不需要进行按摩。考虑到这一点,您可以在bash中这样做
for vmpid in $(jps -q); do
jstack $vmpid
done显然,jps是用Java实现的,因为我发现它会报告自己。如果这让您感到困扰,那么可以对上面的内容进行调整,以过滤掉jps本身。
发布于 2016-04-01 20:02:58
您可以在您的终端中运行以下命令:
ps -e | grep [j]ava | awk '{print $1}' | xargs -n 1 jstackhttps://stackoverflow.com/questions/36364706
复制相似问题