首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过bash命令打印一个线程(带有线程id)的堆栈跟踪?

如何通过bash命令打印一个线程(带有线程id)的堆栈跟踪?
EN

Stack Overflow用户
提问于 2017-10-02 03:30:50
回答 1查看 542关注 0票数 1

我会尝试监控在线程上执行的操作,比如tail命令。并且它应该打印线程的stackTrace (其线程id是已知的)。

我可以打印当前在java进程下运行的所有线程的堆栈跟踪,如下所示

pid=$(ps -ef |grep 'catalina' | grep java | awk ' { print $2 } ');
eval '/home/jdk/bin/jstack -F $pid' > stack_trace.txt

但我需要打印线程id已知的线程的堆栈跟踪。

在这方面的任何帮助都是非常受欢迎的。提前感谢:)

EN

回答 1

Stack Overflow用户

发布于 2018-06-02 04:24:09

你能试着看看下面的内容是否适合你吗?

TARGET_THREAD_ID=xxx JAVA_PID=$(ps -ef | grep "[org].apache.catalina.startup.Bootstrap"  | awk '{print $2}'); jstack -F ${JAVA_PID} | sed -n -e "/Thread ${TARGET_THREAD_ID}/,/Thread /p" | head -n -1

它将输出如下所示的内容

Thread xxx: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
 - java.lang.Object.wait() @bci=2, line=502 (Compiled frame)
 - java.lang.ref.Reference.tryHandlePending(boolean) @bci=54, line=191 (Compiled frame)
 - java.lang.ref.Reference$ReferenceHandler.run() @bci=1, line=153 (Compiled frame)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46516101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档